Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 根据月份、年份将n x 1数据帧转换为a x b大小的网格_Python_Python 3.x_Pandas_Numpy - Fatal编程技术网

Python 根据月份、年份将n x 1数据帧转换为a x b大小的网格

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

我有一个带有日期时间索引的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.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-增加了新的段落-我的意思是什么