我一直在寻找相当长一段时间,并没有达到我想做的任何地方......
我有一个pandas数据帧,我希望将A列与B的值进行比较,如果A和B相等,则在新列中写入1或0。
我可以写一个丑陋的for循环,但我知道这不是非常pythony。
我很确定有一种方法可以用apply()来做到这一点,但我没有到达任何地方。
我希望能够比较包含整数的列以及包含字符串的列。
提前感谢您的帮助。
答案 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。