Bas*_*ien 0 python apply pandas
我一直在寻找相当于我想做的事情......
我有一个pandas数据帧,我想在其中比较A列到B的值,如果A和B相等,则在新列中写入1或0.
我可以写一个丑陋的for循环但我知道这不是非常pythony.
我很确定有一种方法可以用apply()做到这一点,但我没有到达任何地方.
我希望能够比较包含整数的列以及包含字符串的列.
在此先感谢您的帮助.
如果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.