将长数据帧转换为宽数据帧

Cha*_*imm 2 python dataframe pandas

从这里开始的系统方法是什么:

x = {'col0': [1, 1, 2, 2], 'col1': ['a', 'b', 'a', 'b'],
     'col2': ['x', 'x', 'x', 'x'], 'col3': [12, 13, 14, 15]}
y = pd.DataFrame(data=x)
y
   col0 col1 col2 col3
0    1     a    x   12
1    1     b    x   13
2    2     a    x   14
3    2     b    x   15
Run Code Online (Sandbox Code Playgroud)

对此:

y2
   col0  col3__a_x  col3__b_x
0     1         12       13
1     2         14       15
Run Code Online (Sandbox Code Playgroud)

我最初想到的是cast来自 R 的 reshape2 包。 然而,我对 Pandas/Python 的熟悉程度远不如对 R 的熟悉。

在我正在使用的数据集中col1有 3 个不同的值,col2都是相同的值,约 200,000 行,以及约 80 列会添加后缀。

WeN*_*Ben 5

你将需要pviot和列变矮

s=pd.pivot_table(y,index='col0',columns=['col1','col2'],values='col3')
s.columns=s.columns.map('_'.join)
s.add_prefix('col3_').reset_index()
Out[1383]: 
   col0  col3_a_x  col3_b_x
0     1        12        13
1     2        14        15
Run Code Online (Sandbox Code Playgroud)