亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

根據條件語句將條件列 C 設置為 Col A 或 Col B 的最快方法

根據條件語句將條件列 C 設置為 Col A 或 Col B 的最快方法

慕雪6442864 2023-06-20 16:47:13
我有一個 ~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))


查看完整回答
反對 回復 2023-06-20
?
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)


查看完整回答
反對 回復 2023-06-20
  • 2 回答
  • 0 關注
  • 150 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號