我正在使用数据框df
。我需要在数据帧中仅减去非零值,如果为0,则将其保持为0。
difference = df[value] - 10
帮助我尽可能有效地进行条件减法,只有在数据帧中大于零的值时才减去。
数据框df
value
1 0
2 0
3 0
4 0
5 51.134
6 52.4833
7 53.7698
8 5
预期产出:
0
0
0
0
41.134
42.4833
43.7698
-5
答案 0 :(得分:3)
我只是使用where
:
In [12]: df.value.where(df.value == 0, df.value - 10)
Out[12]:
1 0.0000
2 0.0000
3 0.0000
4 0.0000
5 41.1340
6 42.4833
7 43.7698
8 -5.0000
Name: value, dtype: float64
这被视为"使用现有的df.value
df.value == 0
,否则使用df.value - 10
"。
答案 1 :(得分:1)
reaplce
然后fillna
df.replace({0:np.nan}).add(-10).fillna(0)
Out[1638]:
value
1 0.0000
2 0.0000
3 0.0000
4 0.0000
5 41.1340
6 42.4833
7 43.7698
8 -5.0000
答案 2 :(得分:0)
这应该做的工作!
difference = [0 if i == 0 else i-10 for i in df]