在一定行数处转置数据帧
Transpose dataframe at certain number of rows
我有如下所示的数据。
Col1 Col2 Col3 Col4
0 A01 CY5 1 -1.091990
1 A01 CY5 2 7.402931
2 A01 CY5 3 0.089915
3 A02 CY5 1 -1.526202
4 A02 CY5 2 2.229630
5 A02 CY5 3 -0.604621
6 A01 TEX 1 -10.525215
7 A01 TEX 2 -38.686164
8 A01 TEX 3 1.337128
9 A06 CY5 1 8.216859
10 A06 CY5 2 6.890880
11 A06 CY5 3 0.466027
我需要像下面提到的那样转换数据框。
A01 CY5 -1.09199006470146 7.40293083315009 -1.52620195542602
A02 CY5 -1.52620195542602 2.2963003873349 -0.604621233162902
A01 TEX -10.5252148197815 -3.6861635883042 1.33712824456416
A06 CY5 8.21685850315987 6.89088046827999 0.46602727589584
我试过数据透视表,但无法获得所需的输出。我希望有人能帮忙。
您可以使用 pivot
重塑。然后使用 rename_axis
+ reset_index
得到想要的形式:
out = df.pivot(['Col1', 'Col2'], 'Col3', 'Col4').add_prefix('Col4_').rename_axis(columns=[None]).reset_index()
输出:
Col1 Col2 Col4_1 Col4_2 Col4_3
0 A01 CY5 -1.091990 7.402931 0.089915
1 A01 TEX -10.525215 -38.686164 1.337128
2 A02 CY5 -1.526202 2.229630 -0.604621
3 A06 CY5 8.216859 6.890880 0.466027
我有如下所示的数据。
Col1 Col2 Col3 Col4
0 A01 CY5 1 -1.091990
1 A01 CY5 2 7.402931
2 A01 CY5 3 0.089915
3 A02 CY5 1 -1.526202
4 A02 CY5 2 2.229630
5 A02 CY5 3 -0.604621
6 A01 TEX 1 -10.525215
7 A01 TEX 2 -38.686164
8 A01 TEX 3 1.337128
9 A06 CY5 1 8.216859
10 A06 CY5 2 6.890880
11 A06 CY5 3 0.466027
我需要像下面提到的那样转换数据框。
A01 CY5 -1.09199006470146 7.40293083315009 -1.52620195542602
A02 CY5 -1.52620195542602 2.2963003873349 -0.604621233162902
A01 TEX -10.5252148197815 -3.6861635883042 1.33712824456416
A06 CY5 8.21685850315987 6.89088046827999 0.46602727589584
我试过数据透视表,但无法获得所需的输出。我希望有人能帮忙。
您可以使用 pivot
重塑。然后使用 rename_axis
+ reset_index
得到想要的形式:
out = df.pivot(['Col1', 'Col2'], 'Col3', 'Col4').add_prefix('Col4_').rename_axis(columns=[None]).reset_index()
输出:
Col1 Col2 Col4_1 Col4_2 Col4_3
0 A01 CY5 -1.091990 7.402931 0.089915
1 A01 TEX -10.525215 -38.686164 1.337128
2 A02 CY5 -1.526202 2.229630 -0.604621
3 A06 CY5 8.216859 6.890880 0.466027