假设我有以下两个表。请注意,第二张表又延续了15天到2月:
dates1 = pd.DataFrame(data=pd.date_range('2018-1-1 00:00', '2018-1-31 23:59', freq='h'), columns=['date'])
dates2 = pd.DataFrame(data=pd.date_range('2018-1-1 00:00', '2018-2-15 23:59', freq='h'), columns=['date'])
我想根据第一个数据帧中的最新日期来过滤第二个数据帧。在这里,我从dates1表中找到最近的日期。结果是一个时间戳:
most_recent_dates1 = dates1['date'].max()
Timestamp('2018-01-31 23:00:00')
然后,我尝试如下过滤第二个表:
dates3 = dates2[[dates2['date'] <= most_recent_dates1]]
但是我收到以下错误:
ValueError: Item wrong length 1 instead of 1104.
如何使用一个时间戳从另一个表中过滤一个表,而不会出现此错误?我知道我可以使用内部联接(pandas.merge)来做到这一点,但是有些时候我不想使用内部联接。
熊猫数据框索引允许将布尔系列/数组作为输入。因此,您不需要使用系列列表。您可以直接使用布尔序列进行索引:
dates3 = dates2[dates2['date'] <= most_recent_dates1]
正如错误所指出的,您提供了一个长度为1的项目,而它期望一个与数据框具有相同长度的项目。
有关更多信息,请参见官方文档中的布尔索引。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句