微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – pandas将数据帧转换为3d数据

似乎有很多可能将平面表数据转换为3d数组,但我在某种程度上找不到一个有效的方法:假设我有一些数据有列= [‘name’,’type’,’date’,’值’].当我试图转过头时

pivot(index='name', columns=['type', 'date'], values='value')

我明白了

ValueError: Buffer has wrong number of dimensions (expected 1, got 2)

我是否可以阅读开发熊猫的文档?看起来这就是那里描述的用法.我正在跑0.8只熊猫.

我想,我想知道我是否有一个MultiIndex [‘x’,’y’,’z’]系列,是否有大熊猫方式将其放入面板?我可以使用groupby并完成工作,但这几乎就像我在numpy中组装n-d数组时所做的那样.看起来像一个相当通用的操作,所以我想它可能已经实现.

解决方法:

pivot仅支持使用单个列生成列.您可能希望使用pivot_table生成使用多个列的数据透视表,例如

pandas.tools.pivot.pivot_table(your_dataframe, values='value', index='name', columns=['type', 'date'], aggfunc='sum')

API referencedocumentation for pivot中提到的分层列与您有多个值字段而不是多个类别的情况相关.

假设’type’和’date’是类别,其值应该用作列名,那么你应该使用pivot_table.

但是,如果要为同一类别(例如“类型”)的不同值字段使用单独的列,则应使用pivot而不指定value列,将类别指定为columns参数.

例如,假设您有此DataFrame:

df = DataFrame({'name': ['A', 'B', 'A', 'B'], 'type': [1, 1, 2, 2], 'date': ['2012-01-01', '2012-01-01', '2012-02-01', '2012-02-01'],  'value': [1, 2, 3, 4]})

pt = df.pivot_table(values='value', index='name', columns=['type', 'date'])
p = df.pivot('name', 'type')

pt将是:

type           1           2
date  2012-01-01  2012-02-01
name                        
A              1           3
B              2           4

和p将是:

          date              value   
type           1           2      1  2
name                                  
A     2012-01-01  2012-02-01      1  3
B     2012-01-01  2012-02-01      2  4

注意:对于pandas版本< 0.14.0,index和columns关键字参数应该分别用行和列替换.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐