热线电话:13121318867

登录
2019-02-13 阅读量: 744
怎么转置列并将其绑定到pandas中的一行

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

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]

0.0000
1
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子