Python比较两列中的行并有条件地写入结果

Bas*_*ien 0 python apply pandas

我一直在寻找相当于我想做的事情......

我有一个pandas数据帧,我想在其中比较A列到B的值,如果A和B相等,则在新列中写入1或0.

我可以写一个丑陋的for循环但我知道这不是非常pythony.

我很确定有一种方法可以用apply()做到这一点,但我没有到达任何地方.

我希望能够比较包含整数的列以及包含字符串的列.

在此先感谢您的帮助.

unu*_*tbu 5

如果df是Pandas DataFrame,那么

df['newcol'] = (df['A'] == df['B']).astype('int')
Run Code Online (Sandbox Code Playgroud)

例如,

In [20]: df = pd.DataFrame({'A': [1,2,'foo'], 'B': [1,99,'foo']})

In [21]: df
Out[21]: 
     A    B
0    1    1
1    2   99
2  foo  foo

In [22]: df['newcol'] = (df['A'] == df['B']).astype('int')

In [23]: df
Out[23]: 
     A    B  newcol
0    1    1       1
1    2   99       0
2  foo  foo       1
Run Code Online (Sandbox Code Playgroud)

df['A'] == df['B'] 返回一个布尔系列:

In [24]: df['A'] == df['B']
Out[24]: 
0     True
1    False
2     True
dtype: bool
Run Code Online (Sandbox Code Playgroud)

astype('int')True/ False值转换为整数 - 0表示False,1表示True.