我有一個 ~2MM 行數據框。我有一個問題,在用定界符拆分一列之后,看起來好像沒有一致數量的列合并到這個拆分中。為了解決這個問題,我嘗試使用有條件的新列 C,如果條件為真,則應等于列 A。如果為假,則設置為等于列 B。編輯:在嘗試提供的解決方案時,我嘗試了下面列出的一些代碼,但它沒有更新任何行。這是我正在使用的數據集的一個更好的例子: Scenario meteorology time of day0 xxx D7 Bus. Hours1 yyy F3 Offshift2 zzz Bus. Hours NaN3 aaa Offshift NaN4 bbb Offshift NaN前兩行格式正確。場景、氣象和一天中的時間已從合并的列中正確拆分出來。但是,在其他行中,合并列沒有氣象數據。因此,“一天中的時間”數據已填充到“氣象”中,導致“一天中的時間”為 nan。這是建議的方法:from dask import dataframe as ddddf = dd.from_pandas(df, npartitions=10)ddf[(ddf.met=='Bus. Hours') | (ddf.met == 'Offshift')]['time'] = ddf['met']ddf[(ddf.met=='Bus. Hours') | (ddf.met == 'Offshift')]['met'] = np.nan這不會更新“time”或“met”中的相應行。我也試過在熊貓中這樣做:df.loc[(df.met == 'Bus.Hours') | (df.met == 'Offshift'), 'time'] = df['met']df.loc[(df.met == 'Bus.Hours') | (df.met == 'Offshift'), 'met'] = np.nan這種方法運行,但似乎無限期掛起。
2 回答

慕斯709654
TA貢獻1840條經驗 獲得超5個贊
嘗試,并計算時間,畢竟print(ddf.head(10))要看輸出
from dask import dataframe as dd
ddf = dd.from_pandas(df, npartitions=10)
ddf[(ddf.A == 2) | (ddf.A == 1)]['C'] = ddf['A']
ddf[(ddf.A != 2) & (ddf.A != 1)]['C'] = ddf['B']
print(ddf.head(x))

largeQ
TA貢獻2039條經驗 獲得超8個贊
最終如下:
cond = df.met.isin(['Bus. Hours', 'Offshift'])
df['met'] = np.where(cond, np.nan, df['met'])
df['time'] = np.where(cond, df['met'], df['time'])
遇到需要這樣做的另一種情況。它沿著不應包含子字符串的字符串行:
df1 = dataset.copy(deep=True)
df1['F_adj'] = 0
cond = (df1['Type'] == 'Delayed Ignition') | ~(df1['Type'].str.contains('Delayed'))
df1['F_adj'] = np.where(cond,df1['F'], 0)
添加回答
舉報
0/150
提交
取消