gpt4 book ai didi

python - 比较 2 个 DataFrame 的半匹配行

转载 作者:行者123 更新时间:2023-12-04 12:04:32 25 4
gpt4 key购买 nike

我有 2 个数据框,单元格中有字符串:

df1

ID t1 t2 t3
0 x1 y1 z1
1 x2 y2 z2
2 x3 y3 z3
3 x4 y4 z4
4 x1 y5 z5

df2

ID t1 t2 t3
0 x3 y3 z3
1 x4 y4 z4
2 x1 y1 z1
3 x2 y2 z2
4 x1 y7 z5

我发现我可以比较行中的差异:

#exactly the same t1, t2, and t3
pd.merge(df1, df2, on=['t1', 't2', 't3'], how='inner')

这将找到行之间的精确匹配(其中 df1 中的 t1 等于 df2 中的 t1,等等)。

如何找到特定列的 2 个数据帧之间的半匹配?也就是说,除了完全匹配之外,只有指定列可能存在差异?例如,如果我指定 t2,匹配将是 t1 in df1 = t1 in df2, t2 in df1 != df2, df1 中的 t3 = df3 中的 t3(例如,2 个数据帧中的行 ID=4 除了完全匹配外还将匹配此值)。

更新 1:

似乎很多答案都考虑了顺序(如果行不完全对齐,该方法将失败)。

尝试以下检查您的方法:

d1 = {'Entity1': ['x1', 'x2','x3','x4','x1', 'x6', 'x1'], 'Relationship': ['y1', 'y2','y3','y4','y5','y6', 'y9'], 'Entity2': ['z1', 'z2','z3','z4','z5','z6', 'z5']}
df1 = pd.DataFrame(data=d1)


d2 = {'Entity1': ['x3', 'x4','x1','x2','x6','x1'], 'Relationship': ['y3', 'y4','y1','y2','y6','y7'], 'Entity2': ['z3', 'z4','z1','z2','z7','z5']}
df2 = pd.DataFrame(data=d2)

注意精确匹配之一是x2, y2, z2,半匹配之一是df1 = x1, y5, z5, df2 = x1, y7,z5

最佳答案

您可以合并两个数据框,然后过滤两边 t1 和 t2 相同的所有行:

df3 = pd.merge(df1, df2, left_index=True, right_index=True)
df3[(df3["t1_x"] == df3["t1_y"]) & (df3["t3_x"] == df3["t3_y"])]

关于python - 比较 2 个 DataFrame 的半匹配行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69056031/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com