python – 如何最好地使用pandas.DataFrame.pivot?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 如何最好地使用pandas.DataFrame.pivot?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1930字,纯文字阅读大概需要3分钟。
内容图文
![python – 如何最好地使用pandas.DataFrame.pivot?](/upload/InfoBanner/zyjiaocheng/796/545083a96a604702954f539781af8eef.jpg)
我试图将一个数据帧从键,值的行转换为一个表,其中键作为列,值作为单元格.例如:
使用键输入数据帧,值:
>>>df = pd.DataFrame([['TIME', 'VAL1', 'VAL2', 'VAL3',
'TIME', 'VAL1', 'VAL2', 'VAL3'],
["00:00:01",1,2,3,"00:00:02", 1,2,3]]).T
0 1
0 TIME 00:00:01
1 VAL1 1
2 VAL2 2
3 VAL3 3
4 TIME 00:00:02
5 VAL1 1
6 VAL2 2
7 VAL3 3
我希望它看起来像:
TIME VAL1 VAL2 VAL3
00:00:01 1 2 3
00:00:02 1 2 3
我几乎可以用枢轴得到我想要的东西:
>>>df.pivot(columns=0, values=1)
TIME VAL1 VAL2 VAL3
0 00:00:01 None None None
1 None 1 None None
2 None None 2 None
3 None None None 3
4 00:00:02 None None None
5 None 1 None None
6 None None 2 None
7 None None None 3
我可以合并行来获得我想要的东西:
>>> df.pivot(columns=0, values=1).ffill().drop_duplicates(subset='TIME',
keep='last').set_index('TIME')
TIME VAL1 VAL2 VAL3
00:00:01 1 2 3
00:00:02 1 2 3
但这似乎是一种相当尴尬的方式,它会浪费大量数据集的大量内存.有更简单的方法吗?
我厌倦了看pd.DataFrame.from_items()和pd.DataFrame.from_records(),但没有成功.
解决方法:
您需要一个“ID”变量来指示哪些行组合在一起.在您想要的输出中,您隐含地假设每个4行的块应该成为单行,但是pandas不会假设这一点,因为通常,旋转应该能够将非连续行组合在一起.要在新DataFrame中成为单行的每组行必须具有一些共享值.
如果您的数据实际上只是四行的块,您可以像这样创建ID变量:
df['ID'] = np.arange(len(df))//4
您可以看到ID变量现在标记应分组的行:
>>> df
0 1 ID
0 TIME 00:00:01 0
1 VAL1 1 0
2 VAL2 2 0
3 VAL3 3 0
4 TIME 00:00:02 1
5 VAL1 1 1
6 VAL2 2 1
7 VAL3 3 1
然后使用此新列作为数据透视表的“索引”.
>>> df.pivot(index="ID", columns=0, values=1)
0 TIME VAL1 VAL2 VAL3
ID
0 00:00:01 1 2 3
1 00:00:02 1 2 3
内容总结
以上是互联网集市为您收集整理的python – 如何最好地使用pandas.DataFrame.pivot?全部内容,希望文章能够帮你解决python – 如何最好地使用pandas.DataFrame.pivot?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。