我想通过在合并数据帧之前和之后进行比较来找出消失的行。
以前的数据帧:
(每行都是唯一的)
index date code col2
0 10/01 1111 B
1 11/02 2222 A
2 12/11 5555 B
3 12/15 1111 B当前数据帧:
(每一行也是唯一的)
index date code col2
0 10/01 1111 B
1 12/11 5555 B
2 12/17 2222 D
3 12/19 4444 B 合并的结果:
index date code col2 delete
0 10/01 1111 B
1 11/02 2222 A yes
2 12/11 5555 B
3 12/15 1111 B yes
4 12/17 2222 D
5 12/19 4444 B发布于 2020-02-25 12:43:05
您只需执行一个outer连接,并将indicator设置为TRUE。然后,您需要根据您的指示符列筛选所需的行。
import pandas as pd
df_prev = pd.DataFrame({'code':[111,222,555,666],
'col':['A','B','B','C']})
df_after = pd.DataFrame({'code':[111,222,555,777,888],
'col':['A','B','B','D','E']})
df_merged = pd.merge(df_prev,
df_after,
how = 'outer',
left_on = ['code','col'],
right_on = ['code','col'],
indicator = True)
deleted_rows = df_merged.loc[df_merged._merge == "left_only",]那么结果将是
>> deleted_rows
code col _merge
3 666 C left_only发布于 2020-02-25 10:56:28
这里没有缺少任何行。您正在执行merge语句,但没有向(how=)传递任何参数。因此,默认情况下,它正在进行内部连接。
如果您希望每一行都有重复项,则应该进行外连接。
考虑在您的案例中使用以下代码。
data_frame1.merge(data_frame2, how='outer')https://stackoverflow.com/questions/60386760
复制相似问题