reshape a pandas dataframe with multiple columns(重塑具有多列的 pandas 数据帧)
本文介绍了重塑具有多列的 pandas 数据帧的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在重塑 pandas 数据帧方面有一个问题。如下所示(行数和列数各不相同):
columns col1 col2 col3 col4
Species
sp1 218.000000 521.000000 533.000000 793.000000
sp1 0.105569 0.252300 0.258111 0.384019
sp1 2 2 2 3
sp2 225.000000 521.000000 540.000000 800.000000
sp2 0.107862 0.249760 0.258869 0.383509
sp2 2 2 2 3
sp3 217.000000 477.000000 512.000000 725.000000
sp3 0.112377 0.247022 0.265148 0.375453
sp3 1 1 3 3
列Species
是我的索引。我想这样重塑它:
Species columns c f p
sp1 col1 218.000000 0.105569 2
sp1 col2 521.000000 0.252300 2
sp1 col3 533.000000 0.258111 2
sp1 col4 793.000000 0.384019 3
sp2
sp2
sp2
sp2
sp3 etc
sp3
sp3
sp3
但我不知道该怎么办。
其目的是然后制作具有bokeh的p.rect()
功能的热图,x轴是列c
或f
,y轴是列Species
。矩形的大小将由列p
确定。
提前谢谢。
推荐答案
先按楼层划分创建MultiIndex
,然后按stack
和unstack
重塑:
c = np.array(['c','f','p'])
df.index = [df.index, c[np.arange(len(df.index)) % 3]]
print (df)
columns col1 col2 col3 col4
Species
sp1 c 218.000000 521.000000 533.000000 793.000000
f 0.105569 0.252300 0.258111 0.384019
p 2.000000 2.000000 2.000000 3.000000
sp2 c 225.000000 521.000000 540.000000 800.000000
f 0.107862 0.249760 0.258869 0.383509
p 2.000000 2.000000 2.000000 3.000000
sp3 c 217.000000 477.000000 512.000000 725.000000
f 0.112377 0.247022 0.265148 0.375453
p 1.000000 1.000000 3.000000 3.000000
df = df.stack().unstack(1).reset_index()
print (df)
Species columns c f p
0 sp1 col1 218.0 0.105569 2.0
1 sp1 col2 521.0 0.252300 2.0
2 sp1 col3 533.0 0.258111 2.0
3 sp1 col4 793.0 0.384019 3.0
4 sp2 col1 225.0 0.107862 2.0
5 sp2 col2 521.0 0.249760 2.0
6 sp2 col3 540.0 0.258869 2.0
7 sp2 col4 800.0 0.383509 3.0
8 sp3 col1 217.0 0.112377 1.0
9 sp3 col2 477.0 0.247022 1.0
10 sp3 col3 512.0 0.265148 3.0
11 sp3 col4 725.0 0.375453 3.0
这篇关于重塑具有多列的 pandas 数据帧的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
织梦狗教程
本文标题为:重塑具有多列的 pandas 数据帧


基础教程推荐
猜你喜欢
- Python,确定字符串是否应转换为 Int 或 Float 2022-01-01
- 比较两个文本文件以找出差异并将它们输出到新的文本文件 2022-01-01
- kivy 应用程序中的一个简单网页作为小部件 2022-01-01
- 对多索引数据帧的列进行排序 2022-01-01
- 在 Django Admin 中使用内联 OneToOneField 2022-01-01
- 究竟什么是“容器"?在蟒蛇?(以及所有的 python 容器类型是什么?) 2022-01-01
- matplotlib 设置 yaxis 标签大小 2022-01-01
- Python 中是否有任何支持将长字符串转储为块文字或折叠块的 yaml 库? 2022-01-01
- 在 Python 中将货币解析为数字 2022-01-01
- Kivy 使用 opencv.调整图像大小 2022-01-01