基于Pandas(python)中另一列的值添加新列

时间:2018-01-03 17:05:28

标签: python pandas

给定类似于

的数据框
Vote A Vote B
   1     4      
   3     2      
   1     5      

我想添加一个名为Winner的新列,用于比较两列Vote AVote B之间的值,并指定获胜者。

Winner
B
A
B

我怎么能在熊猫中做到这一点?

3 个答案:

答案 0 :(得分:2)

您可以使用

def winner(row):
    if row['Vote A'] > row['Vote B']:
        return 'A'
    elif row['Vote A'] < row['Vote B']:
        return 'B'
    else:
        return ''

df['Winner'] = df[['Vote A','Vote B']].apply(winner, axis=1)

哪个收益

Vote A  Vote B  Winner
1       4       B
3       2       A
1       5       B

答案 1 :(得分:2)

使用idxmax.str

In [274]: df['Winner'] = df[['Vote A','Vote B']].idxmax(axis=1).str[-1]

In [275]: df
Out[275]:
   Vote A  Vote B Winner
0       1       4      B
1       3       2      A
2       1       5      B

答案 2 :(得分:1)

df.eq(df.max(1),0).dot(df.columns).str[-1]
Out[223]: 
0    B
1    A
2    B
dtype: object

分配后

df.assign(New=df.eq(df.max(1),0).dot(df.columns).str[-1])
Out[224]: 
   VoteA  VoteB New
0      1      4   B
1      3      2   A
2      1      5   B