转置列并将其绑定到熊猫行

时间:2019-02-12 17:14:44

标签: pandas python-2.7

我有一个具有以下格式的数据集:

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),然后估算相应的值。

有关此问题的任何建议?

1 个答案:

答案 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]