如何使用比较多个数据框并使用熊猫返回匹配项

Posted

技术标签:

【中文标题】如何使用比较多个数据框并使用熊猫返回匹配项【英文标题】:How to use compare several dataframes and return the matches using pandas 【发布时间】:2018-01-22 21:12:01 【问题描述】:

如果我有几个看起来像这样的 pandas 数据框:

Name       Score
Sam        4
Aaron      5
Neil       6
Ben        7

Name       Score
Morgan     5
Neil       6
Adam       8
Ben        5

Name       Score
Evan       5
Nathan     4
Neil       6
Ben        2

如何使用 pandas.concat(join) 将所有数据帧合并为一个大数据帧,然后只返回在所有三个数据帧中找到的名称?

预期输出:

Name
Neil
Ben

【问题讨论】:

【参考方案1】:

如果你只对名字感兴趣,你可以像这样得到交集

pd.Series(list(set(df1.Name) & set(df2.Name) & set(df3.Name)))

0    Neil
1     Ben

【讨论】:

【参考方案2】:

您可以将pd.concat与参数join='inner'一起使用

pd.concat([d1, d2, d3], axis=1, join='inner')

      Score  Score  Score
Name                     
Neil      6      6      6
Ben       7      5      2

如果需要区分列,可以传递keys参数

pd.concat(
    [d.Score for d in [d1, d2, d3]],
    axis=1, join='inner', keys=['d1', 'd2', 'd3']
)

      d1  d2  d3
Name            
Neil   6   6   6
Ben    7   5   2

【讨论】:

非常好,一如既往!

以上是关于如何使用比较多个数据框并使用熊猫返回匹配项的主要内容,如果未能解决你的问题,请参考以下文章

如何格式化熊猫数据框并保留原始浮点精度值

如何迭代熊猫数据框并创建新列

如何根据熊猫数据框中的部分匹配来隔离重复项

使熊猫具有多索引列的多个数据框并完全连接

如何将列表中的值分配给熊猫数据框并控制每个列表元素在数据框中的分布/频率

Plotly:如何使用下拉菜单过滤熊猫数据框?