我有一个具有以下格式的数据集:
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)然后输入相应的值。
关于这个问题的任何建议?
解决办法:
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]








暂无数据