Pandas 熊猫数据帧(python)中的迭代和编辑

Pandas 熊猫数据帧(python)中的迭代和编辑,pandas,Pandas,我需要根据另一列的布尔值修改数据帧的一列。假设我有一列值,一列true/false,我想用相应的bool true对这些值求和1。我尝试使用iterrows,但这会复制数据帧,并且不会修改它 谢谢大家! 输入: val bool a 1.0 true b 2.3 false ... 输出: val bool a 2.0 true b 2.3 false 使用loc创建布尔掩码并使用此掩码更新值,例如: [157]中的 df=pd.Dat

我需要根据另一列的布尔值修改数据帧的一列。假设我有一列值,一列true/false,我想用相应的bool true对这些值求和1。我尝试使用iterrows,但这会复制数据帧,并且不会修改它

谢谢大家!

输入:

   val    bool
a   1.0   true
b   2.3   false
...
输出:

   val    bool
a  2.0    true
b  2.3    false

使用
loc
创建布尔掩码并使用此掩码更新值,例如:

[157]中的

df=pd.DataFrame({'a':np.random.randn(5),'b':[True,False,True,True,False]})
df
出[157]:
a b
0-1.666632对
1.518392假
2-0.340623正确
3-0.233279对
4-0.169503假
[5行x 2列]
在[158]中:
#确定布尔掩码具有真值的位置
df.loc[df.b==True,'a']
出[158]:
0   -1.666632
2   -0.340623
3   -0.233279
名称:a,数据类型:float64
在[159]中:
#现在添加一个
df.loc[df.b==True,'a']+=1
在[160]中:
df
Out[160]:
a b
0-0.666632对
1.518392假
2 0.659377对
3 0.766721对
4-0.169503假
[5行x 2列]

df['val']=df.apply(lambda row:row['val']+[0,1][row['bool']],axis=1)
不要使用
bool
作为列名,加上你的值,如果它们被认为是布尔值,那么它们是无效的,它们应该是
True
False
而不是
True
False