【问题标题】:Pandas compare each row to list熊猫将每一行与列表进行比较
【发布时间】:2020-01-14 12:06:04
【问题描述】:

给定一个如下所示的 pandas 数据框

    Q1  Q2  Q3
0   'A' 'B' 'A'
1   'B' 'B' 'C'

和一个包含我想要比较的值的列表

['B','B','A']

如何获得每一行有多少列条目与相应的列表条目一致?所以输出应该是某种形式的

[2/3, 2/3]

上面的小代码sn-p:

import pandas as pd
df = pd.DataFrame({'Q1':['A','B'],'Q2':['B','B'],'Q3':['A','C']})
true_answers = ['B','B','A']

【问题讨论】:

  • 为什么第二个应该是1/3

标签: python pandas


【解决方案1】:

按列表比较值(它的长度必须与列数相同)并使用DataFrame.eq 方法获取mean

s = df.eq(true_answers).mean(axis=1)
print (s)
0    0.666667
1    0.666667
dtype: float64

如果想要列表使用:

print (list(s))
[0.6666666666666666, 0.6666666666666666]

详情

print (df.eq(true_answers))
      Q1    Q2     Q3
0  False  True   True
1   True  True  False

【讨论】:

    猜你喜欢
    • 2016-03-08
    • 1970-01-01
    • 1970-01-01
    • 2017-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-11
    相关资源
    最近更新 更多