我的pandas数据框看起来如下,每个月有30天。现在我想将这个数据帧转换为常规的Julian天日历,并在那些日期将NA设置为缺少日期(例如1/31/2001:NA等等)并稍后进行插值。任何人都可以建议我选择处理熊猫吗?
Date X
1/1/2001 30.56787109
1/2/2001 29.57751465
1/3/2001 30.38424683
1/4/2001 28.64764404
1/5/2001 27.54763794
......
......
1/29/2001 27.44857788
1/30/2001 27.16296387
2/1/2001 28.02816772
2/2/2001 28.28137207
2/3/2001 28.38671875
.......
.......
02/29/2001 32.23730469
02/30/2001 32.56161499
3/1/2001 31.38146973
3/2/2001 30.73623657
3/3/2001 30.81912231
......
3/28/2001 33.7562561
3/29/2001 34.46350098
3/30/2001 33.49130249
4/1/2001 30.91223145
4/2/2001 30.94335938
.....
4/30/2001 30.02526855
......
......
12/29/2001 27.44161987
12/30/2001 28.43597412
答案 0 :(得分:2)
所以,我假设您的Date列只是一个字符串而不是索引。而且我也用一个整数值替换X,以便更容易跟踪发生的事情。首先,转换为datetime,并设置为index。
>>> df.Date=pd.to_datetime(df.Date,errors='coerce')
>>> df = df.set_index('Date')
2001-02-27 10
2001-02-28 11
NaT 12
NaT 13
2001-03-01 14
2001-03-02 15
因此,使用内置时间感知的python / pandas来识别无效日期(非闰年2月29日和任何一年2月30日)。
然后您可以重新取样以将索引转到有效日历上。您还有一些填充选项(除了默认的NaN)和重新采样,或者您可以稍后进行插值。
>>> df=df.resample('d')
2001-01-29 3
2001-01-30 4
2001-01-31 NaN
2001-02-01 5
2001-02-02 6
...
2001-02-27 10
2001-02-28 11
2001-03-01 14
2001-03-02 15
答案 1 :(得分:0)
首先,将列类型设置为 pandas.Datetimeindex ,然后使用 to_julian_date()函数。然后,您可以使用 interpolate()方法来查找缺少的日期。
来源: