首页 > 解决方案 > 根据特定列上的条件用特定值填充数据框中的行

问题描述

我有一个数据框df

df=
A   B   C  D
1   4   7  2
2   6  -3  9
-2  7   2  4

我有兴趣将整行值更改为列中0的元素C是否为负。即 if df['C']<0,其对应的行应填充0如下所示的值:

df=
A   B   C  D
1   4   7  2
0   0   0  0
-2  7   2  4

标签: pandasdataframe

解决方案


您可以使用DataFrame.wheremask

df.where(df['C'] >= 0, 0)

   A  B  C  D
0  1  4  7  2
1  0  0  0  0
2 -2  7  2  4

另一种选择是通过乘法进行简单屏蔽:

df.mul(df['C'] >= 0, axis=0)

   A  B  C  D
0  1  4  7  2
1  0  0  0  0
2 -2  7  2  4

您还可以直接通过如下评论loc所示设置值:

df.loc[df['C'] <= 0] = 0
df

   A  B  C  D
0  1  4  7  2
1  0  0  0  0
2 -2  7  2  4

这具有修改原始 DataFrame 的额外好处(如果您不想返回副本)。


推荐阅读