![](/img/trans.png)
[英]I must pass two-dimensional input. Three-dimensional list to dataframe (Python)
[英]Create a three dimensional dataframe (python)
我有一个数据框,其中包含来自ONE unit的MULTIPLE年份的各种数据点。 该单元号列在我的数据帧的第一列,名为“Unit”。 年变量位于第二列。
对于visalisation,这是我的数据集的迷你版本。 实际上是大小:55列乘700000行。
import random
col3=[random.randrange(1,101,1) for _ in range (14)]
col4=[random.randrange(1,101,1) for _ in range (14)]
d = {'Unit': [1, 1, 1, 1, 2, 2, 2, 3, 4, 5, 6, 6, 6, 6],
'Year': [2014, 2015, 2016, 2017, 2015, 2016, 2017, 2017, 2014, 2015, 2014, 2015, 2016, 2017], 'col3' : col3, 'col4' : col4 }
df = pd.DataFrame(data=d)
有了这个数据集,我想看一年内和几年之间col3和col4之间的比率。 出于这个原因,我想制作一个三维数据帧,它将年份放在一个附加轴而不是我2D帧中的变量。
有没有人有关于如何做到这一点的提示? 这是一个好方法吗? 建议?
仁
由于现在不推荐使用Panel
,因此可以选择使用MultiIndex
:
df1 = df.set_index(['Unit','Year']).unstack()
print (df1)
col3 col4
Year 2014 2015 2016 2017 2014 2015 2016 2017
Unit
1 58.0 80.0 37.0 79.0 12.0 32.0 22.0 39.0
2 NaN 90.0 46.0 98.0 NaN 73.0 95.0 28.0
3 NaN NaN NaN 52.0 NaN NaN NaN 90.0
4 90.0 NaN NaN NaN 92.0 NaN NaN NaN
5 NaN 9.0 NaN NaN NaN 3.0 NaN NaN
6 33.0 22.0 41.0 40.0 21.0 5.0 69.0 10.0
df2 = df.set_index(['Year','Unit']).unstack()
print (df2)
col3 col4
Unit 1 2 3 4 5 6 1 2 3 4 5 6
Year
2014 58.0 NaN NaN 90.0 NaN 33.0 12.0 NaN NaN 92.0 NaN 21.0
2015 80.0 90.0 NaN NaN 9.0 22.0 32.0 73.0 NaN NaN 3.0 5.0
2016 37.0 46.0 NaN NaN NaN 41.0 22.0 95.0 NaN NaN NaN 69.0
2017 79.0 98.0 52.0 NaN NaN 40.0 39.0 28.0 90.0 NaN NaN 10.0
另一种方法是使用xarray
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.