如何合并两个重叠的数据帧

时间:2018-06-10 12:46:41

标签: python pandas

我需要编写接收新数据帧的代码并将它们与现有数据帧合并。行按日期排序,但遗憾的是通常会有重叠。例如。

    Transaction_Date    transaction
1330    26/05/2017  2997.71
1327    30/05/2017  -1394.59
1329    30/05/2017  -2650.00
1328    30/05/2017  664.00

1329    30/05/2017  -2650.00
1328    30/05/2017  664.00
1326    31/05/2017  374.79
1324    01/06/2017  -160.00
1325    01/06/2017  -27.62

假设第一个数据框名为df1,第二个数据框名为df2,如何合并它们以消除重叠部分中的重复数据?

预期结果应为:

    Transaction_Date    transaction
1330    26/05/2017  2997.71
1327    30/05/2017  -1394.59
1329    30/05/2017  -2650.00
1328    30/05/2017  664.00
1326    31/05/2017  374.79
1324    01/06/2017  -160.00
1325    01/06/2017  -27.62

1 个答案:

答案 0 :(得分:2)

我认为需要concatduplicatedboolean indexing的索引值删除重复项:

df = pd.concat([df1, df2])
df = df[~df.index.duplicated()]

完整示例:

import pandas as pd

df = pd.DataFrame({
    'date': pd.date_range('2018-01-01', periods=7, freq='12H'),
    'index': [1330, 1327, 1329, 1328, 1326, 1324, 1325]
}).set_index('index')

df1 = df.iloc[[0,1,2,3]]
df2 = df.iloc[[2,3,4,5,6]]

df = pd.concat([df1, df2])
df = df[~df.index.duplicated()]

print(df)

返回:

                     date
index                    
1330  2018-01-01 00:00:00
1327  2018-01-01 12:00:00
1329  2018-01-02 00:00:00
1328  2018-01-02 12:00:00
1326  2018-01-03 00:00:00
1324  2018-01-03 12:00:00
1325  2018-01-04 00:00:00
相关问题