python - 如何以适合在 R 中分析的格式重新排列 pandas 中的表格?

标签 python r pandas dataframe reshape

在 Pandas 中:

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 中进行分析的数据框中 reshape 数据透视表?类似以下类型:

  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

这没有给出名称属性,因此您必须按照您的方式设置它 reset the index :

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

关于python - 如何以适合在 R 中分析的格式重新排列 pandas 中的表格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18551342/

相关文章:

正则表达式在单独出现或带有空格而不是带有小数点的数字时替换句点 (.) r

r - read.table和read.delim函数之间的区别

string - 在 R 中提取混合数字和字符的字符串的数字部分

python - 用街道号码和字母 python 分隔街道名称字符串

python - 通过重新索引将行插入数据帧

python - 访问通过 pandas 调用的绘图中绘图对象的句柄

python - Python 列表的 SQL TOP 1 模拟

python - 从字符串中删除所有字母和逗号

c++ - delphi 代码编译成 obj 文件以便在 python 中使用

python - python 正则表达式中的 Re.search 未按预期工作