仅在熊猫DataFrame中的两列数据时间对象之间比较日期

时间:2019-11-14 22:20:27

标签: python pandas dataframe

我有以下数据子集,实际数据集要大得多。我只想选择Quote_Time和Last_Trade_Date之间的年份月份和日期相等的行,而不管时间如何不同。想知道这样做的最佳方法是什么。

                  Quote_Time           Last_Trade_Date
72  2018-06-14T13:41:28.000Z  2018-06-08T19:58:04.000Z
75  2018-06-14T13:56:23.000Z  2018-06-08T19:58:04.000Z
78  2018-06-14T14:11:15.000Z  2018-06-08T19:58:04.000Z
81  2018-06-14T14:26:09.000Z  2018-06-08T19:58:04.000Z
84  2018-06-14T14:41:14.000Z  2018-06-08T19:58:04.000Z

在这个小例子中,将不返回任何行,但是在较大的数据集中,存在匹配项。

1 个答案:

答案 0 :(得分:1)

作为先决条件,在读取数据时,请分析日期列:

df = pd.read_csv('file.csv', ..., parse_dates=['Quote_Time', 'Last_Trade_Date'])

现在,您只需要标准化日期并进行比较即可。假设两列都是日期时间,则可以执行以下操作:

df[df['Quote_Time'].dt.normalize() == df['Last_Trade_Date'].dt.normalize()]  

或者,

df[df['Quote_Time'].dt.date == df['Last_Trade_Date'].dt.date]

使用nunique的另一种有趣的解决方案(不太实际):

df[df.apply(lambda x: x.dt.normalize(), axis=1).nunique(axis=1) == 1]