我有一个类似于以下内容的pandas数据框:
>>> df = pd.DataFrame([["B","X"],["C","Y"],["D","X"]])
>>> df.columns = ["A","B"]
>>> df
A B
0 B X
1 C Y
2 D X
如果B列中的值为“X”,如何应用方法更改A列的值?例如,期望的结果可能是:
>>> df
A B
0 Bx X
1 C Y
2 Dx X
我想把两个列组合在一起(df['C']=df['A']+df['B']
),但可能有更好的方法来执行这样一个简单的操作
答案 0 :(得分:2)
一种方法是使用loc
df.loc[df.B == 'X', 'A']+='x'
A B
0 Bx X
1 C Y
2 Dx X
编辑:根据评论中的问题,这是你在找什么?
df.loc [df.B =='X','A'] = df.A.str.lower()+'x'
A B
0 bx X
1 C Y
2 dx X
答案 1 :(得分:0)
我使用assign
:
df_out = df.assign(A=np.where(df['B'] == 'X',df['A'].add('x'),df['A']))
print(df_out)
输出:
A B
0 Bx X
1 C Y
2 Dx X
我喜欢使用assign,因为它会创建原始数据框的副本,而A-Za-z的解决方案实际上修改了原始数据框,从而在更改跟踪中丢失以进行故障排除。