Python 根据月份、年份将n x 1数据帧转换为a x b大小的网格
我有一个带有日期时间索引的pandas数据帧,我想从pandas时间序列数据帧将其重新定向为网格 我的数据框如下所示:Python 根据月份、年份将n x 1数据帧转换为a x b大小的网格,python,python-3.x,pandas,numpy,Python,Python 3.x,Pandas,Numpy,我有一个带有日期时间索引的pandas数据帧,我想从pandas时间序列数据帧将其重新定向为网格 我的数据框如下所示: DATE VAL 2007-06 0.008530 2007-07 -0.067069 2007-08 0.026660 2007-09 0.016237 2007-10 0.025145 2007-11 -0.063666 2007-12 -0.002118 2008-01 -0.0599
DATE VAL
2007-06 0.008530
2007-07 -0.067069
2007-08 0.026660
2007-09 0.016237
2007-10 0.025145
2007-11 -0.063666
2007-12 -0.002118
2008-01 -0.059951
2008-02 -0.033422
2008-03 0.008978
2008-04 0.039997
2008-05 0.043563
2008-06 -0.076166
...
Jan Feb Mar ... Jun Jul Aug Sep Oct Nov Dec
2007 0 0 0 ... .008530 -.067069 .026660 .016237 .025145 -.06366 -.025145
2008 -.05995 -.033422 .00897 ... -.076166 ...
...
我想用[year]
行和[month]
列重新定向,如下所示:
DATE VAL
2007-06 0.008530
2007-07 -0.067069
2007-08 0.026660
2007-09 0.016237
2007-10 0.025145
2007-11 -0.063666
2007-12 -0.002118
2008-01 -0.059951
2008-02 -0.033422
2008-03 0.008978
2008-04 0.039997
2008-05 0.043563
2008-06 -0.076166
...
Jan Feb Mar ... Jun Jul Aug Sep Oct Nov Dec
2007 0 0 0 ... .008530 -.067069 .026660 .016237 .025145 -.06366 -.025145
2008 -.05995 -.033422 .00897 ... -.076166 ...
...
重塑/stack/unstack方法似乎可以实现我想要的版本,但由于我有一个单一的日期索引,这些方法不适合我的数据框架 首先将日期转换为日期时间,并通过进行重塑,以供月份使用。列名称的最后更改顺序为,删除索引namd列名称的顺序为: 另一种解决方案是使用,为了正确排序,使用了s: 具有
重命名列的解决方案:
d = {1: 'Jan', 2: 'Feb', 3: 'Mar', 4: 'Apr', 5: 'May', 6: 'Jun',
7: 'Jul', 8: 'Aug', 9: 'Sep', 10: 'Oct', 11: 'Nov', 12: 'Dec'}
df1 = (df.set_index([df.index.year, df.index.month]).VAL
.unstack(fill_value=0)
.rename(columns=d))
首先,将日期转换为日期时间,并根据进行重塑,以供月份使用。列名称的最后更改顺序为,删除索引namd列名称的顺序为:
另一种解决方案是使用,为了正确排序,使用了s:
具有重命名列的解决方案:
d = {1: 'Jan', 2: 'Feb', 3: 'Mar', 4: 'Apr', 5: 'May', 6: 'Jun',
7: 'Jul', 8: 'Aug', 9: 'Sep', 10: 'Oct', 11: 'Nov', 12: 'Dec'}
df1 = (df.set_index([df.index.year, df.index.month]).VAL
.unstack(fill_value=0)
.rename(columns=d))
这里可能已经给出了答案:@SathishSanjeevi,不太可能……年和月值可以通过应用于索引的year
和month
方法获得,但如果没有应用程序,这并没有什么帮助:@SathishSanjeevi,不完全如此……年和月值可通过应用于索引的year
和month
方法获得,但如果没有应用程序创建,这并没有真正的帮助。重新编制索引(如第一个示例中所示)是一种浪费,因此我放弃了它,添加了不同的命名。以下工作:df=df.set_index([df.index.year,df.index.month]).VAL.unstack(fill_value=0)df.rename(列={1:'Jan',2:'Feb',3:'Mar',4:'Apr',5:'May',6:'Jun',7:'Jul',8:'Aug',9:'Sep',10:'Oct',11:'Nov',12:'Dec',inplace=True)
@Chris-yop,仅删除inplace=True
需要该部分…只需返回屏幕即可otherwise@Chris-我认为这是一条线,如果第二条线是necessary@Chris-增加了新的段落我的意思很好。重新编制索引(如第一个示例中所示)是一种浪费,因此我放弃了它,添加了不同的命名。以下工作:df=df.set_index([df.index.year,df.index.month]).VAL.unstack(fill_value=0)df.rename(列={1:'Jan',2:'Feb',3:'Mar',4:'Apr',5:'May',6:'Jun',7:'Jul',8:'Aug',9:'Sep',10:'Oct',11:'Nov',12:'Dec',inplace=True)
@Chris-yop,仅删除inplace=True
需要该部分…只需返回屏幕即可otherwise@Chris-我认为这是一条线,如果第二条线是necessary@Chris-增加了新的段落-我的意思是什么