3 回答
TA贡献1155条经验 获得超0个赞
首先,我们使用您的两个列表创建一个字典zip
replace_dict = dict(zip(list1,list2))
然后我们循环它来处理你的任务,
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条经验 获得超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条经验 获得超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
添加回答
举报