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

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)

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
添加回答
舉報