如何过滤大熊猫的年份和季度

时间:2015-04-05 21:37:42

标签: python pandas

我有一个DataFrame,其列类型为datetime64 [ns]。我想过滤年和季度。有关如何做到这一点的任何建议吗?

我尝试过这个繁琐的解决方案

data = data[(pd.Series(pd.DatetimeIndex(data['MatCalID']).year).isin([2018]) & pd.Series(pd.DatetimeIndex(data['MatCalID']).quarter).isin([2,3]))]

为什么这个复杂的解决方案?:

  • 有必要使用pd.DatetimeIndex来访问'year'和'quarter'
  • 有必要使用pd.Series来使用'isin'

不幸的是,我提供了'Unalignable boolean Series key'作为错误。

有人知道怎么做吗?

1 个答案:

答案 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