根据条件将多列上的值替换为nan

2024-04-26 10:20:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我的df包含许多列。我只想根据条件用NaN替换列A和B中的所有值。另外,我想将相同的条件应用于除C列和D列以外的另一个df。到目前为止,我的搜索返回的方法只适用于一列。你知道吗

我目前的尝试。
仅在A列和B列:

df[df.loc[:, df.columns['A','B']] < (0.1 * 500)] = np.nan

A列和B列除外:

df[df.loc[:, df.columns != ['A','B']] < (0.1 * 500)] = np.nan

这些代码不起作用。你知道吗


Tags: columns方法代码dfnpnan条件loc
1条回答
网友
1楼 · 发布于 2024-04-26 10:20:16

我想你需要^{}

df = pd.DataFrame({
         'A':[4,5,4,5,5,4],
         'B':[7,8,9,4,2,3],
         'C':[1,3,5,7,1,0],
         'D':[5,3,6,9,2,4],

}) * 10

c = ['A','B']
df[c] = df[c].mask(df[c] < (0.1 * 500))
print (df)
      A     B   C   D
0   NaN  70.0  10  50
1  50.0  80.0  30  30
2   NaN  90.0  50  60
3  50.0   NaN  70  90
4  50.0   NaN  10  20
5   NaN   NaN   0  40

c1 = df.columns.difference(c)
df[c1] = df[c1].mask(df[c1] < (0.1 * 500))

print (df)
      A     B     C     D
0   NaN  70.0   NaN  50.0
1  50.0  80.0   NaN   NaN
2   NaN  90.0  50.0  60.0
3  50.0   NaN  70.0  90.0
4  50.0   NaN   NaN   NaN
5   NaN   NaN   NaN   NaN

相关问题 更多 >