Python 3.x 合并数据帧时,通过比较前后来查找缺少的行
我希望在合并数据帧时通过比较前后来查找消失的行 上一个数据帧: (每行都是唯一的) 当前数据帧: (每行也是唯一的) 合并结果:Python 3.x 合并数据帧时,通过比较前后来查找缺少的行,python-3.x,pandas,Python 3.x,Pandas,我希望在合并数据帧时通过比较前后来查找消失的行 上一个数据帧: (每行都是唯一的) 当前数据帧: (每行也是唯一的) 合并结果: 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
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
这里没有缺行。您正在执行merge语句,但没有向(how=)传递任何参数。因此,默认情况下,它执行内部联接 如果您想要每一行,即使是重复的,您也应该进行外部联接。 在您的案例中考虑以下代码
data_frame1.merge(data_frame2, how='outer')
您只需执行一个
outer
连接并将指示器设置为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
“数据框架1”和“数据框架2”的列是相同的。我想找到一个列,它位于“data\u frame1”中,但不在“data\u frame2”中。
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