Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何筛选熊猫的年度和季度_Python_Pandas - Fatal编程技术网

Python 如何筛选熊猫的年度和季度

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

我有一个数据帧,其列类型为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
,因为现在有了新的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”工作得很好。我指的是数据,不是价格。现在这个问题已经改变了。所以当你说“工作”的时候,你的意思是我应该发布一个答案?是的,你应该这样做