簡體   English   中英

如何以適合R分析的格式重新排列熊貓表?

[英]How to rearrange table in pandas in a format suitable for analysis in R?

在大熊貓中:

df = pd.DataFrame({'row1':['a','b','a','a','b','b','a','b','b','a'], 'row2':['x','x','y','y','y','x','x','y','x','y'],'col':[1,2,1,2,2,1,2,1,1,2],'val':[34,25,22,53,33,19,42,38,33,61]})

p = pd.pivot_table(df,values='val',rows=['row1','row2'],cols='col')

col         1   2
row1 row2        
a    x     34  42
     y     22  57
b    x     26  25
     y     38  33

是否可以在適合R中分析的數據框中重塑數據透視表,類型如下:

  row1 row2 col val
    a   x   1   34
    a   y   1   22
    a   x   2   42
    a   y   2   57      
    b   x   1   26  
    b   y   1   38
    b   x   2   25
    b   y   2   33

一種方法是使用stack

In [11]: p.stack()
Out[11]: 
row1  row2  col
a     x     1      34
            2      42
      y     1      22
            2      57
b     x     1      26
            2      25
      y     1      38
            2      33
dtype: int64

它沒有提供name屬性,因此您必須在重置索引時進行設置:

In [12]: df = p.stack().reset_index(name='val')

In [13]: df
Out[13]: 
  row1 row2  col  val
0    a    x    1   34
1    a    x    2   42
2    a    y    1   22
3    a    y    2   57
4    b    x    1   26
5    b    x    2   25
6    b    y    1   38
7    b    y    2   33

你可以做:

>>> pd.melt(p.reset_index(), id_vars=['row1', 'row2'],
            var_name='col', value_name='val')
  row1 row2  col  val
0    a    x    1   34
1    a    y    1   22
2    b    x    1   26
3    b    y    1   38
4    a    x    2   42
5    a    y    2   57
6    b    x    2   25
7    b    y    2   33

重置索引,使row1row2列:

>>> p.reset_index()
col row1 row2   1   2
0      a    x  34  42
1      a    y  22  57
2      b    x  26  25
3      b    y  38  33

然后pd.melt融化中的所有列,除了row1row2id_vars參數)成一個名為valvalue_name參數),並保持到列他們在指定的列所屬的信息colvar_name參數)。

暫無
暫無

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

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