【问题标题】:How to Compare 2 DataFrames which have different Column Names(have same and different values) in Python如何在 Python 中比较具有不同列名(具有相同和不同值)的 2 个 DataFrame
【发布时间】:2021-10-18 21:31:04
【问题描述】:

我有几个数据框,每个都有不同和相同的列名,具有相同和不同列名的列可能具有相同的值。我想在一个数据集中找到与其他数据集的列具有匹配值的列(可能具有相同或不同的列名)。有没有使用python的有效方法来做到这一点?

例如:

df1:   ID count Name
       0   1    A  
       1   2    B  
       2   3    C  


df2:   person_id count_number Name Value
        0           1          A    11
        2           3          C    22
        3           4          D    33

df3:   key  Value
       11    11
       22    22
       33    33

我试过'isin()':效率不高,'datacompy':不能用?因为我有不同的列名。

我的预期输出:匹配的列名。并且还可以更好地显示他们有多少匹配项。

例如:在本例中,我要查找 df1、df2 和 df3 的匹配列。我想要的输出是:他们的成对匹配:对于 df1 和 df2:ID&person_id; count&count_number,姓名;对于 df2 和 df3:值,等等。

【问题讨论】:

  • 欢迎堆栈溢出。请edit 提出minimal reproducible example 的问题,包括您对给定输入的预期输出,以及根据您自己的研究到目前为止您尝试过的代码,以便我们了解如何帮助

标签: python pandas dataframe match


【解决方案1】:

由于您没有预期的输出,因此很难回答。第一个命题:

>>> df1.merge(df2, left_on='ID', right_on='person_id').merge(df3, on='Value')

   ID  count Name_x  person_id  count_number Name_y  Value  key
0   0      1      A          0             1      A     11   11
1   2      3      C          2             3      C     22   22

【讨论】:

  • 您好 Corralien,感谢您的回复!我已经在帖子中更新了我的预期输出,我不想合并这些 df,我想要匹配的列。谢谢!
  • 您能否为您的样本手动构建输出数据框以了解输出应该如何?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-02
  • 1970-01-01
  • 2020-11-17
相关资源
最近更新 更多