我需要编写接收新数据帧的代码并将它们与现有数据帧合并。行按日期排序,但遗憾的是通常会有重叠。例如。
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
答案 0 :(得分:2)
我认为需要concat
按duplicated
与boolean 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