2

我试图用同一行中前两列中的值之间的差异替换熊猫数据框的一列中的几个零。

   A     B      C
0  10    12     -2
1  6     3       0
2  5     18      0
3  3     11     -8

我想用C和 中的各个值之间的差异替换列中的AB。仅替换零而不是非零值。

4

3 回答 3

1

尝试:

mask = df['C'].eq(0)
df.loc[mask, 'C'] = df.loc[mask, 'A'] - df.loc[mask, 'B']
于 2020-09-19T09:44:53.933 回答
0

您可以使用mask

df['C'] = df.C.mask(df.C == 0, df.A - df.B)
df
    A   B   C
0  10  12  -2
1   6   3   3
2   5  18 -13
3   3  11  -8

或者

不确定,但如果你想要这个

df.C.update(df.A - df.B)
df
    A   B   C
0  10  12  -2
1   6   3   3
2   5  18 -13
3   3  11  -8
于 2020-09-19T10:01:01.600 回答
0

给定示例,最简单的解决方案只是删除现有C列并生成一个新列C

df.drop(['C'],axis=1,inplace=True)
df['C'] = df['A'] - df['B']

输出:

  A      B       C
0 10     12     -2
1 6      3       3
2 5      18    -13
3 3      11     -8
于 2020-09-19T09:44:18.073 回答