比较两个数据帧并将差异写入另一个数据帧

时间:2021-02-16 00:59:45

标签: python-3.x pandas

我有两个数据框。 df1 和 df2

import pandas as pd

df1 = pd.DataFrame({
'Buyer': ['Carl', 'Alex', 'Lauren'],
'Quantity': [18, 3, 8]})

df2 = pd.DataFrame({
'Buyer': ['Carl', 'Alex', 'Maya', 'Emily'],
'Quantity': [18, 3, 5, 5]})

我想知道是否有一种方法可以将 df1 与 df2 进行比较,并将 df1 中的任何内容附加到 df2 中,这样我就会得到类似的最终结果

df2 = pd.DataFrame({
'Buyer': ['Carl', 'Alex', 'Maya', 'Emily', 'Lauren'],
'Quantity': [18, 3, 5, 5, 8]})

3 个答案:

答案 0 :(得分:5)

你只需要连接两个 dfs 然后删除欺骗

df2 = pd.concat([df1,df2]).drop_duplicates()

>>> df2
    Buyer  Quantity
0    Carl        18
1    Alex         3
2  Lauren         8
2    Maya         5
3   Emily         5

答案 1 :(得分:3)

像您说的那样将它们组合起来 (append),然后进行重复操作:

import pandas as pd

df1 = pd.DataFrame({
'Buyer': ['Carl', 'Alex', 'Lauren'],
'Quantity': [18, 3, 8]})

df2 = pd.DataFrame({
'Buyer': ['Carl', 'Alex', 'Maya', 'Emily'],
'Quantity': [18, 3, 5, 5]})

df = df1.append(df2)

df = df.drop_duplicates()

print(df)

输出:

    Buyer  Quantity
0    Carl        18
1    Alex         3
2    Maya         5
3   Emily         5
4  Lauren         8

答案 2 :(得分:1)

使用merge可以实现。

res = pd.merge(df2,df1,on=['Buyer','Quantity'],how='outer')

输出:

Buyer   Quantity
0   Carl    18
1   Alex    3
2   Maya    5
3   Emily   5
4   Lauren  8
相关问题