Python 根据年份删除PeriodIndex类型的列

Python 根据年份删除PeriodIndex类型的列,python,pandas,Python,Pandas,我有一个数据框架,其中列作为季度(PeriodIndex)——例如2010q1、2010q2。 此外,还有多个名称相同的列,因为我已将月度数据转换为季度数据。我想让列显示从2011年第一季度起(删除对应于2010年第四季度及以下的列)。 我正在尝试以下代码: df.columns = df.to_datetime(df.columns).to_period('Q') df = df[(df.columns[df.columns.year >= 2011])] 但现在这些列重复了三次,四行

我有一个数据框架,其中列作为季度(PeriodIndex)——例如2010q1、2010q2。 此外,还有多个名称相同的列,因为我已将月度数据转换为季度数据。我想让列显示从2011年第一季度起(删除对应于2010年第四季度及以下的列)。 我正在尝试以下代码:

df.columns = df.to_datetime(df.columns).to_period('Q')
df = df[(df.columns[df.columns.year >= 2011])]
但现在这些列重复了三次,四行排列如下: 2011Q12011Q12011Q12011Q12011Q12011Q12011Q12011Q12011Q12011Q12011Q12011Q2 预计产出列为2011年第一季度、2011年第一季度、2011年第一季度、2011年第二季度、2011年第二季度、2011年第三季度、2011年第三季度、2011年第三季度、2012年第三季度

为什么会出现这种情况?过滤掉日期时间索引列的最佳方法是什么?

我相信您需要,因为过滤列名:

df = df.loc[:, df.columns.year >= 2011]

是的,这个有效。但是为什么
df=df[(df.columns[df.columns.year>=2011])]
不能按预期工作呢?为什么它会产生额外的列?@ggaurav-我认为问题是过滤的列不是唯一的,所以可能需要
df=df[(df.columns[df.columns.year>=2011]).unique()]
您答对了。但是你建议的解决方案是一个更好的方法。谢谢