第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

Pandas:如何根據(jù)多列的條件將值替換為 np.nan

Pandas:如何根據(jù)多列的條件將值替換為 np.nan

守候你守候我 2022-10-25 15:13:06
這是我的數(shù)據(jù)框。I  A  B  C  D  E  F1  9  4  0  T  F  F2  0  5  1  S  X  J3  1  8  0  G  G  J這是我的預期輸出。我想替換 A ==0 中的值,替換 D 中的 np.nan。I  A   B   C   D   E   F1  9   4   0   T   F   nan2  0   5   1   nan X   J3  1   8   0   G   G   nan我想用 A/B/C 列的值替換 D/E/F 列的值。例如,D 列根據(jù) A 列變化。(A->D, B->E, C->F)我試過這段代碼,但沒有改變價值。list1 = ['A', 'B', 'C']list2 = ['D', 'E', 'F']for i in list2:    for j in list1:        df[i] = np.where(df[j] == 0, np.nan, df[i])對于下面的代碼,運行良好。但是有很多列,所以我想使用列表和句子。df['D'] = np.where(df.A == 0, np.nan, df.D)
查看完整描述

3 回答

?
白衣非少年

TA貢獻1155條經(jīng)驗 獲得超0個贊

首先,我們使用您的兩個列表創(chuàng)建一個字典zip


replace_dict = dict(zip(list1,list2))

然后我們循環(huán)它來處理你的任務,


for k,v in replace_dict.items():

    df.loc[df[k] == 0, v] = np.nan


print(df)

   I  A  B  C    D  E    F

0  1  9  4  0    T  F  NaN

1  2  0  5  1  NaN  X    J

2  3  1  8  0    G  G  NaN

另一種方法是np.where與您的列表一起使用。


df[list2] = np.where(df[list1].eq(0), np.nan,df[list2])


print(df)


   I  A  B  C    D  E    F

0  1  9  4  0    T  F  NaN

1  2  0  5  1  NaN  X    J

2  3  1  8  0    G  G  NaN


查看完整回答
反對 回復 2022-10-25
?
嚕嚕噠

TA貢獻1784條經(jīng)驗 獲得超7個贊

讓我們做


df.loc[:,'D':].mask(df.loc[:,'A':'C'].eq(0).values)

     D  E    F

0    T  F  NaN

1  NaN  X    J

2    G  G  NaN

df.loc[:,'D':]= df.loc[:,'D':].mask(df.loc[:,'A':'C'].eq(0).values)


查看完整回答
反對 回復 2022-10-25
?
HUH函數(shù)

TA貢獻1836條經(jīng)驗 獲得超4個贊

DataFrame.mask用作DataFrame.rename:_

df[list2] = df[list2].mask(df[list1].rename(columns=dict(zip(list1, list2))).eq(0))


print(df)

   I  A  B  C    D  E    F

0  1  9  4  0    T  F  NaN

1  2  0  5  1  NaN  X    J

2  3  1  8  0    G  G  NaN


查看完整回答
反對 回復 2022-10-25
  • 3 回答
  • 0 關(guān)注
  • 158 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號