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

Python比较两列中的行并有条件地写入结果,python,pandas,apply,Python,Pandas,Apply,我已经找了很长一段时间没有找到任何接近我想做的事情 我有一个数据框,在这个数据框中,我想比较a列和B列的值,如果a和B相等,则在新列中写入1或0 我可以写一个丑陋的for循环,但我知道这不是很像pythony 我很确定使用apply()可以做到这一点,但我没有任何进展 我希望能够比较包含整数的列和包含字符串的列 提前感谢您的帮助。如果df是熊猫数据帧,则 df['newcol'] = (df['A'] == df['B']).astype('int') 比如说, In [20]: df = p

我已经找了很长一段时间没有找到任何接近我想做的事情

我有一个数据框,在这个数据框中,我想比较a列和B列的值,如果a和B相等,则在新列中写入1或0

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

我很确定使用apply()可以做到这一点,但我没有任何进展

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


提前感谢您的帮助。

如果
df
是熊猫数据帧,则

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

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
值转换为整数--0表示
False
,1表示
True

通过'df'表示
DataFrame
?这是熊猫的问题吗?是的熊猫数据帧对不起。你说的“df”是指
dataframe
?这是熊猫的问题吗?是的,熊猫数据帧对不起。我如何指示python在新列中写入1或0?如果A和B的内容是字符串,我该如何计算呢?你的更好!我有一个
.apply(lambda x:1,如果x为0)
,在这种情况下要慢得多。太棒了。谢谢你的帮助!如何指示python在新列中写入1或0?如果A和B的内容是字符串,我该如何计算呢?你的更好!我有一个
.apply(lambda x:1,如果x为0)
,在这种情况下要慢得多。太棒了。谢谢你的帮助!