Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 合并数据帧时,通过比较前后来查找缺少的行_Python 3.x_Pandas - Fatal编程技术网

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