Образец:
print (df1)
Val
Date
2020-02-20 152.50
2020-02-19 152.53
2020-02-18 152.20
2020-02-13 152.28
print (df2)
Val
Date
2018-02-20 152.53
2018-02-21 141.37
2020-02-13 152.28
Если объединить:
print (pd.concat([df1, df2]))
Val
Date
2020-02-20 152.50
2020-02-19 152.53
2020-02-18 152.20
2020-02-13 152.28
2018-02-20 152.53
2018-02-21 141.37
2020-02-13 152.28
Ваше решение удаляет только дубликаты по всем столбцам, здесь Val
столбец, индекс не проверяется:
df3 = pd.concat([df1, df2]).drop_duplicates()
print (df3)
Val
Date
2020-02-20 152.50
2020-02-19 152.53 <-dupe
2020-02-18 152.20
2020-02-13 152.28 <-dupe
2018-02-21 141.37
Если преобразовать DatetimeIndex
в столбец, удаляются дубликаты по всем столбцам, здесь Date
и столбцу Val
:
df4 = pd.concat([df1, df2]).reset_index().drop_duplicates()
print (df4)
Date Val
0 2020-02-20 152.50
1 2020-02-19 152.53 <-not dupe, different datetime
2 2020-02-18 152.20
3 2020-02-13 152.28 <-dupe
4 2018-02-20 152.53 <-not dupe, different datetime
5 2018-02-21 141.37
Если необходимо удалить дубликаты с помощью DatetimeIndex
, используйте только
df5 = pd.concat([df1, df2])
df5 = df5[~df5.index.duplicated()]
print (df5)
Date
2020-02-20 152.50
2020-02-19 152.53
2020-02-18 152.20
2020-02-13 152.28 <-dupe
2018-02-20 152.53
2018-02-21 141.37
Или удалить дубликаты по столбцу Date
, указанному в параметре subset
:
df51 = pd.concat([df1, df2]).reset_index().drop_duplicates(subset=['Date'])
print (df51)
Date Val
0 2020-02-20 152.50
1 2020-02-19 152.53
2 2020-02-18 152.20
3 2020-02-13 152.28 <-dupe
4 2018-02-20 152.53
5 2018-02-21 141.37