我需要修改我的pandas数据帧的一列,具体取决于另一列的布尔值。假设我有一列值,一列是真/假,我想将1与这些值相加,并且相应的bool为true。我尝试使用iterrows,但这会复制数据框并且不会对其进行修改。
谢谢!
输入:
val bool
a 1.0 true
b 2.3 false
...
输出:
val bool
a 2.0 true
b 2.3 false
答案 0 :(得分:0)
使用loc
创建布尔掩码并使用此掩码更新值,例如:
In [157]:
df = pd.DataFrame({'a':np.random.randn(5), 'b':[True,False,True,True,False]})
df
Out[157]:
a b
0 -1.666632 True
1 1.518392 False
2 -0.340623 True
3 -0.233279 True
4 -0.169503 False
[5 rows x 2 columns]
In [158]:
# determine the locations where we have a True value for the boolean mask
df.loc[df.b==True,'a']
Out[158]:
0 -1.666632
2 -0.340623
3 -0.233279
Name: a, dtype: float64
In [159]:
# now add one
df.loc[df.b==True,'a'] += 1
In [160]:
df
Out[160]:
a b
0 -0.666632 True
1 1.518392 False
2 0.659377 True
3 0.766721 True
4 -0.169503 False
[5 rows x 2 columns]