Python Pandas:如果条件在另一列

时间:2017-05-30 03:09:24

标签: python pandas

我有一个类似于以下内容的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']),但可能有更好的方法来执行这样一个简单的操作

2 个答案:

答案 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的解决方案实际上修改了原始数据框,从而在更改跟踪中丢失以进行故障排除。