簡體   English   中英

大熊貓;棘手的數據透視表

[英]Pandas; tricky pivot table

我有一個pandas數據幀,我需要重塑/透視。 如何做到這一點似乎超越了我。 數據框如下所示:

Ref Statistic Val1 Val2 Val3 Val4
 0   Mean       0    1    2    3
 0   Std        0.1  0.1  0.1  0.1
 1   Mean       0    1    2    3
 1   Std        0.1  0.1  0.1  0.1
 2   Mean       0    1    2    3
 2   Std        0.1  0.1  0.1  0.1

而我的目標是達到這個目的:

Ref Values Mean Std
 0    Val1   0  0.1
 0    Val2   1  0.1
 0    Val3   2  0.1
 0    Val4   3  0.1
 1    Val1   0  0.1
 1    Val2   1  0.1
 1    Val3   2  0.1
 1    Val4   3  0.1
 2    Val1   0  0.1
 2    Val2   1  0.1
 2    Val3   2  0.1
 2    Val4   3  0.1

看起來這需要不止一個樞軸或者樞軸和groupby的組合,但我沒有運氣......

有任何想法嗎?

>>> df1 = pd.melt(df, value_vars=['Val1', 'Val2', 'Val3', 'Val4'],
...               id_vars=['Statistic', 'Ref'], var_name='Values')
>>> df1.pivot_table(values='value', rows=['Ref', 'Values'], cols='Statistic')
Statistic   Mean  Std
Ref Values           
0   Val1       0  0.1
    Val2       1  0.1
    Val3       2  0.1
    Val4       3  0.1
1   Val1       0  0.1
    Val2       1  0.1
    Val3       2  0.1
    Val4       3  0.1
2   Val1       0  0.1
    Val2       1  0.1
    Val3       2  0.1
    Val4       3  0.1

[12 rows x 2 columns]

如果你不想擁有上面的MultiIndex ,你可以在最后一個數據幀上使用.reset_index方法;

作為替代melt ,可以設置一個多指標和鏈stackunstack命令:

import pandas
# from io import StringIO # python 3
from StringIO import StringIO # python 2

datastring = StringIO('''\
Ref  Statistic  Val1  Val2  Val3  Val4
 0   Mean       0    1    2    3
 0   Std        0.1  0.1  0.1  0.1
 1   Mean       0    1    2    3
 1   Std        0.1  0.1  0.1  0.1
 2   Mean       0    1    2    3
 2   Std        0.1  0.1  0.1  0.1
''')

df = pandas.read_table(datastring, sep='\s\s+', index_col=['Ref', 'Statistic'])
df.columns.names = ['Values']
df.stack(level='values').unstack(level='Statistic')

Statistic  Mean  Std
Ref Values                
0   Val1      0  0.1
    Val2      1  0.1
    Val3      2  0.1
    Val4      3  0.1
1   Val1      0  0.1
    Val2      1  0.1
    Val3      2  0.1
    Val4      3  0.1
2   Val1      0  0.1
    Val2      1  0.1
    Val3      2  0.1
    Val4      3  0.1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM