【发布时间】:2015-04-07 05:00:20
【问题描述】:
我有一个 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 才能访问“年”和“季度”
- 必须使用pd.Series才能使用'isin'
很遗憾,我收到“提供的无法对齐的布尔系列键”错误。
有人知道怎么做吗?
【问题讨论】:
-
您的 pandas 版本是 0.15.0 还是更高版本?如果是这样,这似乎没有必要转换为 datetimeIndex,因为您可以通过
.dt访问year和quarter,例如price['MatCalID'].dt.year你也想要类似data[(price['MatCalID'].dt.year == 2008) & (price['MatCalID'].dt.quarter.isin([2,3]))]的东西吗? -
还有
data和price是什么关系?这些观点是同一个df吗? df的? -
感谢 Ed,'dt' 完美运行。我指的是数据,而不是价格。现在已在问题中进行了更改。
-
所以当你说工作时,你的意思是我应该发帖作为答案?
-
是的,你应该这样做