我有一个具有以下格式的数据集:
df
----------------------------
ID | T1 | C1 | C2 | C3
----------------------------
ID1 1-0w Yes No
ID1 1-0a Yes No XYZ
ID2 1-2w No Yes
ID2 1-0a Yes No YZ
我对转换列T1感兴趣,以便ID行是唯一的。例如,如下:
---------------------------------------------------------------------------------------------
ID | 1-0w-C1 | 1-0w-C2 | 1-0w-C3| 1-0a-C1 | 1-0a-C2 | 1-0a-C3| 1-2w-C1 | 1-2w-C2 | 1-2w-C3|
---------------------------------------------------------------------------------------------
ID1 Yes No XYZ Yes No XYZ
ID2 Yes No YZ No Yes
我尝试了一个简单的移调,但是没有按我的预期工作。我不只是将行更改为列,反之亦然,但我更感兴趣的是使每行都是唯一的,以便将第一列2(T1)根据T1中的唯一值+原始列名转换为列(C1,C2和C3),然后估算相应的值。
有关此问题的任何建议?
答案 0 :(得分:1)
IIUC pivot
+列展平
s=df.pivot_table(['C1','C2','C3'],index='ID',columns='T1',aggfunc='sum').sort_index(level=1,axis=1)
s.columns=s.columns.map('{0[1]}-{0[0]}'.format)
s
Out[297]:
1-0a-C1 1-0a-C2 1-0a-C3 1-0w-C1 ... 1-0w-C3 1-2w-C1 1-2w-C2 1-2w-C3
ID ...
ID1 Yes No XYZ Yes ... 0 NaN NaN NaN
ID2 Yes No YZ NaN ... NaN No Yes 0
[2 rows x 9 columns]