我有以下数据子集,实际数据集要大得多。我只想选择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
在这个小例子中,将不返回任何行,但是在较大的数据集中,存在匹配项。
答案 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]