我有一个DataFrame,其列类型为datetime64 [ns]。我想过滤年和季度。有关如何做到这一点的任何建议吗?
我尝试过这个繁琐的解决方案
data = data[(pd.Series(pd.DatetimeIndex(data['MatCalID']).year).isin([2018]) & pd.Series(pd.DatetimeIndex(data['MatCalID']).quarter).isin([2,3]))]
为什么这个复杂的解决方案?:
不幸的是,我提供了'Unalignable boolean Series key'作为错误。
有人知道怎么做吗?
答案 0 :(得分:3)
如果您正在运行pandas版本0.15.0
或更高版本,则无需将系列投射到DateTimeIndex
,因为现在有一个新的日期时间属性.dt
。您可以使用它来访问datetime对象的year和quarter属性,并使用布尔条件来过滤df:
data[(data['MatCalID'].dt.year == 2008) & (data['MatCalID'].dt.quarter.isin([2,3]))]
通常,当您想要测试多个值的成员资格而不是单个值时,您应该使用isin