首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Pandas数据透视表错误:在Python中,Grouper和axis的长度必须相同

Pandas数据透视表错误:在Python中,Grouper和axis的长度必须相同
EN

Stack Overflow用户
提问于 2020-07-03 23:59:22
回答 2查看 231关注 0票数 0

我正在尝试将每小时索引的数据转换为以每小时值为列的每日索引数据。

示例数据hourlyvol

代码语言:javascript
运行
复制
2010-01-02 03:00:00    0.193571 
2010-01-02 04:00:00    0.262009
2010-01-02 05:00:00    0.179023 
2010-01-02 06:00:00    0.132121
2010-01-02 07:00:00    0.146968

所需的输出格式(不是相同的值,因为我是从另一个可以工作的脚本粘贴的):

代码语言:javascript
运行
复制
                  0         1         2         3         4         5         6   ...   17        18        19        20        21        22        23
2010-01-03       NaN       NaN       NaN       NaN       NaN       NaN       NaN  ...  NaN       NaN -0.001122 -0.001461  0.001350  0.000112  0.000562
2010-01-04  0.001123  0.000337  0.002579  0.003691  0.001895 -0.001224  0.001448  ...  0.0 -0.000221  0.001766 -0.001102 -0.000772  0.000110  0.000662

当前代码:

代码语言:javascript
运行
复制
hourlyvol=price.resample('H',label='left',closed='left').apply(vol).ffill() #works fine
pivot=pd.pivot_table(pd.DataFrame(hourlyvol,columns=["vol"]),\
    index=hourlyvol.index.date,\
    columns=hourlyvol.index.hour,\
    values="vol") # Throws error

回溯:

代码语言:javascript
运行
复制
Traceback (most recent call last):
  File "c:/Users/aytekin/OneDrive - Groupe La Francaise/Bureau/KA/commo amine/intraday/intraday_vol.py", line 29, in <module>
    values="vol")
  File "c:\Users\aytekin\OneDrive - Groupe La Francaise\Bureau\KA\Venv\lib\site-packages\pandas\core\reshape\pivot.py", line 100, in pivot_table      
    grouped = data.groupby(keys, observed=observed)
  File "c:\Users\aytekin\OneDrive - Groupe La Francaise\Bureau\KA\Venv\lib\site-packages\pandas\core\frame.py", line 5810, in groupby
    observed=observed,
  File "c:\Users\aytekin\OneDrive - Groupe La Francaise\Bureau\KA\Venv\lib\site-packages\pandas\core\groupby\groupby.py", line 409, in __init__       
    mutated=self.mutated,
  File "c:\Users\aytekin\OneDrive - Groupe La Francaise\Bureau\KA\Venv\lib\site-packages\pandas\core\groupby\grouper.py", line 625, in get_grouper    
    if not isinstance(gpr, Grouping)
  File "c:\Users\aytekin\OneDrive - Groupe La Francaise\Bureau\KA\Venv\lib\site-packages\pandas\core\groupby\grouper.py", line 256, in __init__       
    self.grouper = _convert_grouper(index, grouper)
  File "c:\Users\aytekin\OneDrive - Groupe La Francaise\Bureau\KA\Venv\lib\site-packages\pandas\core\groupby\grouper.py", line 655, in _convert_grouper
    raise ValueError("Grouper and axis must be same length")
ValueError: Grouper and axis must be same length

我已经研究过this post,但是我已经在创建一个数据文件名了。This one没有明确的答案。

EN

回答 2

Stack Overflow用户

发布于 2020-07-04 00:04:46

为此,您可以使用set_index

代码语言:javascript
运行
复制
(hourlyvol['vol']
    .set_index([hourlyvol.index.date, hourlyvol.index.hour])
    .unstack()
)
票数 1
EN

Stack Overflow用户

发布于 2020-07-04 00:44:34

如果您想使用pivot_table

代码语言:javascript
运行
复制
hourlyvol['Hour_of_day']=hourlyvol.index.hour
hourlyvol['Date']=hourlyvol.index.date
hourlyvol_pivot=hourlyvol.pivot_table(index='Date',columns='Hour_of_day')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62718973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档