Pandas:如何比较两个不同 dataframe 中的列


您可以使用以下方法来比较两个不同 panda DataFrame 中的列:

方法一:统计列之间的匹配值

 df1[' my_column ']. isin (df2[' my_column ']). value_counts ()

方法2:显示列之间的匹配值

 p.d. merge (df1, df2, on=[' my_column '], how=' inner ')

以下示例展示了如何将每种方法与以下 pandas DataFrame 一起使用:

 import numpy as np
import pandas as pd

#create first DataFrame
df1 = pd. DataFrame ({' team ': ['Mavs', 'Rockets', 'Spurs', 'Heat', 'Nets'],
                    ' points ': [22, 30, 15, 17, 14]})

#view DataFrame
print (df1)

      team points
0 Mavs 22
1 Rockets 30
2 Spurs 15
3 Heat 17
4 Nets 14

#create second DataFrame
df2 = pd. DataFrame ({' team ': ['Mavs', 'Thunder', 'Spurs', 'Nets', 'Cavs'],
                    ' points ': [25, 40, 31, 32, 22]})

#view DataFrame
print (df2)

      team points
0 Mavs 25
1 Thunder 40
2 Spurs 31
3 Nets 32
4 Cavs 22

示例1:统计列之间的匹配值

下面的代码展示了如何统计每个DataFrame中团队列之间匹配值的数量:

 #count matching values in team columns
df1[' team ']. isin (df2[' team ']). value_counts ()

True 3
False 2
Name: team, dtype: int64

我们看到两个 DataFrame 有3 个共同的团队名称和2 个不同的团队名称。

示例2:显示列之间的匹配值

下面的代码展示了如何显示每个DataFrame中团队列之间的实际匹配值:

 #display matching values between team columns
p.d. merge (df1, df2, on=[' team '], how=' inner ')

	team points_x points_y
0 Mavs 22 25
1 Spurs 15 31
2 Nets 14 32

从结果中我们可以看到,两个DataFrame在团队列中都有以下共同的值:

  • 小牛队
  • 热刺
  • 网队

相关:如何在 Pandas 中执行内连接(带有示例)

其他资源

以下教程解释了如何在 pandas 中执行其他常见任务:

如何重命名 Pandas 中的列
如何向 Pandas DataFrame 添加列
如何更改 Pandas DataFrame 中的列顺序

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注