Python 如何筛选熊猫的年度和季度
我有一个数据帧,其列类型为datetime64[ns]。我想对年度和季度进行筛选。有什么建议吗 我已经尝试过这个麻烦的解决方案Python 如何筛选熊猫的年度和季度,python,pandas,Python,Pandas,我有一个数据帧,其列类型为datetime64[ns]。我想对年度和季度进行筛选。有什么建议吗 我已经尝试过这个麻烦的解决方案 data = data[(pd.Series(pd.DatetimeIndex(data['MatCalID']).year).isin([2018]) & pd.Series(pd.DatetimeIndex(data['MatCalID']).quarter).isin([2,3]))] 为什么会有这么复杂的解决方案 必须使用pd.DatetimeInd
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
,因为现在有了新的datetime属性。您可以使用它访问datetime对象的year和quarter属性,并使用布尔条件过滤df:
data[(data['MatCalID'].dt.year == 2008) & (data['MatCalID'].dt.quarter.isin([2,3]))]
当您想要测试多个值而不是单个值的成员身份时,通常应该使用
isin
您的pandas 0.15.0版本还是更高版本?如果是这样,似乎没有必要转换为datetimeIndex,因为您可以通过.dt
访问year
和quarter
,例如price['MatCalID'].dt.year
也需要数据[(price['MatCalID'].dt.year==2008)和(price['MatCalID'].dt.quarter.isin([2,3])]?还有数据和价格之间的关系是什么?这些视图是同一个df的吗?df的?谢谢Ed,“dt”工作得很好。我指的是数据,不是价格。现在这个问题已经改变了。所以当你说“工作”的时候,你的意思是我应该发布一个答案?是的,你应该这样做