【问题标题】:How to show the logical relation between two Pandas dataframes?如何显示两个 Pandas 数据框之间的逻辑关系?
【发布时间】:2021-09-20 09:09:52
【问题描述】:

我有两个 Pandas 数据框 df1df2,它们都有一个键列,分别标记为 id1id2。我怎么能简单地显示哪些是两个数据帧共有的键,那些只在df1 中的那些只在df2 中?这个想法是用

显示一个维恩图
  • 元素个数只在df1
  • 元素个数只在df2
  • df1df2 中的元素数量

视觉表示会很好,但不是必需的。

【问题讨论】:

  • 你有什么尝试计算列中的交集和差异?
  • 没怎么尝试,一直在 Pandas 中寻找集合操作。

标签: python-3.x pandas data-wrangling venn-diagram exploratory-data-analysis


【解决方案1】:

一种方法可能是带有指示符列的outer merge

让我们试试这个简单的例子:

>>> df1
  id1
0   a
1   b
2   c
>>> df2
  id2
0   b
1   c
2   d
3   e
>>> mrg = pd.merge(df1['id1'].rename('id'), df2['id2'].rename('id'), on='id',
...                how='outer', indicator=True)
>>> mrg
  id      _merge
0  a   left_only
1  b        both
2  c        both
3  d  right_only
4  e  right_only

现在您会得到一个带有 ID 的列 id,以及一个列 _merge,它会告诉您它们是仅在左侧、右侧还是在两个数据框中。

从那里获取元素的数量非常容易:

>>> mrg['_merge'].value_counts()
right_only    2
both          2
left_only     1
Name: _merge, dtype: int64

【讨论】:

  • 您知道如何使用三个数据帧而不是两个数据帧来做到这一点吗?当我执行mrg = pd.merge(df1['id1'].rename('id'), df2['id2'].rename('id'), df3['id3'].rename('id'), on='id', how='outer', indicator=True) 时,我收到以下错误消息:merge() got multiple values for argument 'how'.
  • @crocefisso pd.merge 只能合并 2 个数据帧
  • 是的,我看到了。一种选择是执行 3 次,1. 使用 df1df2,2. 使用 df2df3,3. 使用 df1df3
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-17
  • 2011-01-03
  • 2019-12-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多