Pandas 熊猫数据帧(python)中的迭代和编辑
我需要根据另一列的布尔值修改数据帧的一列。假设我有一列值,一列true/false,我想用相应的bool true对这些值求和1。我尝试使用iterrows,但这会复制数据帧,并且不会修改它 谢谢大家! 输入: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
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