减少pandas datafram中闰年的列值

2024-10-05 12:16:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个foll的数据帧。形式:

datetime       JD      YEAR
2000-01-01      1      2000
2000-01-02      2      2000
2000-01-03      3      2000
2000-01-04      4      2000
2000-01-05      5      2000
2000-01-06      6      2000
2000-01-07      7      2000
2000-01-08      8      2000
2000-01-09      9      2000
...
2010-12-31      365    2014

JD值是儒略日,即从每年1月1日的1日开始(闰年为366,其他年份为365)。我想从每年闰年的2月29日开始,将JD值减少1。JD值在非闰年不应更改。我现在正在做的是:

^{pr2}$

然而,我看不出闰年JD值有任何变化。我做错什么了?在

--编辑: datetime是索引列


Tags: 数据编辑datetimeyear形式jd年份儒略
1条回答
网友
1楼 · 发布于 2024-10-05 12:16:45

有两个问题:

  1. reduce_JD()中,应该使用and,而不是{}。否则,由于运算符优先,条件df.iloc[59].JD > 59的第二部分应该放在括号中。请注意:

    calendar.isleap(df.iloc[59].YEAR) & (df.iloc[59].JD > 59)
    # True
    calendar.isleap(df.iloc[59].YEAR) & df.iloc[59].JD > 59
    # False!
    
  2. apply函数返回一个新的数据帧,而不是就地修改输入。因此,在remove_leap_JD()中,应该将代码更改为如下内容:

    df = df.apply(reduce_JD, axis=1)
    

相关问题 更多 >

    热门问题