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

时间:2014-09-25 17:41:13

标签: python pandas apply

我一直在寻找相当长一段时间,并没有达到我想做的任何地方......

我有一个pandas数据帧,我希望将A列与B的值进行比较,如果A和B相等,则在新列中写入1或0。

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

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

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

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:5)

如果df是Pandas DataFrame,那么

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

例如,

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

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

In [24]: df['A'] == df['B']
Out[24]: 
0     True
1    False
2     True
dtype: bool

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