我有2个 Dataframe (有些值是重复的,例如2020-02-13):
>>> 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(fd2)
Val
Date
2018-02-20 141.40
2018-02-21 141.37
2018-02-22 141.17
2018-02-26 141.35
2018-02-27 140.69
... ...
2020-02-05 152.37
2020-02-06 152.20
2020-02-10 152.03
2020-02-11 151.19
2020-02-13 152.28
[298 rows x 1 columns]
两者都由Date(df1.set_index('Date'))索引,并且两个 Dataframe 日期都被解析(pd.to_datetime(df1.index))。现在,我想将它们合并并删除重复项(如果有的话)。我试过了
>>> pd.concat([df1, df2])
Val
Date
2018-02-20 141.40
2018-02-21 141.37
2018-02-22 141.17
2018-02-26 141.35
2018-02-27 140.69
... ...
2020-02-13 152.28
2020-02-20 152.50
2020-02-19 152.53
2020-02-18 152.20
2020-02-13 152.28
[302 rows x 1 columns]
我得到了新的df与重复(2020-02-13).但是在跑步的时候
>>>pd.concat([df1, df2]).drop_duplicates()
Val
Date
2018-02-20 141.40
2018-02-21 141.37
2018-02-22 141.17
2018-02-26 141.35
2018-02-27 140.69
... ...
2020-02-06 152.20
2020-02-10 152.03
2020-02-11 151.19
2020-02-13 152.28
2020-02-20 152.50
[299 rows x 1 columns]
它删除了副本,但也删除了一些值(2020-02-18和2020-02-19)。知道为什么吗什么是正确的为什么要连接2个按日期索引的 Dataframe ?
2条答案
按热度按时间k4aesqcs1#
样品:
如果连接在一起:
您的解决方案只删除所有列的重复项,这里
Val
列,索引未测试:如果将
DatetimeIndex
转换为column,它将删除所有列的重复项,这里是Date
和columnVal
:如果需要,仅使用
DatetimeIndex
删除重复项或者通过
subset
参数中指定的列Date
删除重复项:xdyibdwo2#
pandas的concat method的
verify_integrity
选项是否有效?在你的例子中,它看起来像这样: