【发布时间】:2015-09-08 21:52:24
【问题描述】:
以下序列是我得到的 pandas DataFrame 的摘录:
>>> df_t
value
2011-01-31 -5.575000
2011-03-31 7.700000
2011-05-31 15.966667
2011-07-31 10.683333
2011-08-31 10.454167
2011-10-31 9.320833
2011-12-31 -0.358333
2012-01-31 -11.550000
2012-03-31 1.700000
2012-05-31 12.333333
2012-07-31 12.816667
2012-08-31 11.837500
2012-10-31 2.733333
2012-12-31 4.075000
2013-01-31 2.450000
2013-03-31 -4.262500
2013-05-31 11.491667
2013-07-31 14.812500
2013-08-31 13.920833
2013-10-31 4.125000
2013-12-31 0.075000
如何在每个闰年删除 3 月 31 日? 我试过类似的东西:
def isleap(year):
return year % 4 == 0 and (year % 100 != 0 or year % 400 == 0)
if isleap(df_t.index.year):
df_t=df_t[df_t.index.dayofyear!=91]
...但显然,这在我的脑海中太简单了。如果年份是闰年并且日期是一年中的第 91 天,是否有唯一的解决方案可以遍历整个数据框并在每一步检查,还是有更简单的解决方案可用?
编辑:问题不在于如何确定一年是否为闰年,而是如果是,则删除上述数据框中的 3 月 31 日。
【问题讨论】:
-
对不起,如果你的日期已经是日期时间,你不能只做
df_t[(df_t.index.month == 3) & (df_t.index.day == 31)] -
感谢您的评论!当然可以,但是以否定形式使用此代码会删除 每年 年的 3 月 31 日...
-
不,我们的想法是只过滤这些日期,然后确定它是否是闰年,然后删除它们
-
啊,谢谢!我想这就是李建勋一步到位的想法。
标签: python select pandas leap-year