在Pandas中,有几种方法可以计算两个DataFrame对象的交集。
方法一:使用merge()函数
merge()函数是将两个DataFrame对象结合在一起的函数,它可以根据指定的列将两个DataFrame对象合并在一起。
示例:
import pandas as pd
# 创建df1和df2 DataFrame
df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
'B': ['B0', 'B1', 'B2', 'B3'],
'C': ['C0', 'C1', 'C2', 'C3'],
'D': ['D0', 'D1', 'D2', 'D3']})
df2 = pd.DataFrame({'A': ['A2', 'A3', 'A4', 'A5'],
'B': ['B2', 'B3', 'B4', 'B5'],
'C': ['C2', 'C3', 'C4', 'C5'],
'E': ['E2', 'E3', 'E4', 'E5']})
# 使用merge()函数合并,指定on参数代表“以什么作为索引”,默认为None,即使用公共列名作为连接键
df = pd.merge(df1, df2, on=['A', 'B', 'C'], how='inner')
print(df)
上述代码中,将df1和df2的交集返回至新的DataFrame对象df中,使用on参数指定连接键,然后使用how参数指定inner来计算交集。在返回的DataFrame中,保留了所有在df1和df2中的行,只保留在df1和df2中具有相同的值的行。
输出:
A B C D E
0 A2 B2 C2 D2 E2
1 A3 B3 C3 D3 E3
方法二:使用merge()函数和Index
也可以使用merge()函数和Index来计算DataFrame对象之间的交集。使用Index可以让我们更灵活地控制连接键。
示例:
import pandas as pd
# 创建df1和df2 DataFrame
df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
'B': ['B0', 'B1', 'B2', 'B3'],
'C': ['C0', 'C1', 'C2', 'C3'],
'D': ['D0', 'D1', 'D2', 'D3']})
df2 = pd.DataFrame({'A': ['A2', 'A3', 'A4', 'A5'],
'B': ['B2', 'B3', 'B4', 'B5'],
'C': ['C2', 'C3', 'C4', 'C5'],
'E': ['E2', 'E3', 'E4', 'E5']})
# 设置连接键,用于将DataFrame对象合并在一起
merged = pd.merge(df1, df2, left_index=True, right_index=True, how='inner')
print(merged)
上述代码中,我们将df1和df2的索引作为连接键(left_index和right_index),将其合并在一起,之后使用how='inner'来计算它们之间的交集。
输出:
A_x B_x C_x D_x A_y B_y C_y D_y
2 A2 B2 C2 D2 A2 B2 C2 D2
3 A3 B3 C3 D3 A3 B3 C3 D3
注:如果想要在输出中只保留一个列名,可以在merge()函数中使用suffixes参数。
以上就是Pandas中计算DataFrame对象交集的完整攻略。使用合适的方法和连接键,可以在少数代码行中完成相对较复杂的操作。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python Pandas中两个数据框架的交集 - Python技术站