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 DataFrame 添加列
如何更改 Pandas DataFrame 中的列顺序