【问题标题】:transpose column and bind it to a row in pandas [duplicate]转置列并将其绑定到熊猫中的一行[重复]
【发布时间】:2019-07-06 09:53:10
【问题描述】:

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

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

关于这个问题有什么建议吗?

【问题讨论】:

  • 查看枢轴,df.pivot(index = 'ID', columns = 'T1', values = ['C1', 'C2', 'C3'])

标签: pandas python-2.7


【解决方案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]

【讨论】:

    猜你喜欢
    • 2019-05-22
    • 1970-01-01
    • 2022-01-23
    • 2019-12-31
    • 1970-01-01
    • 2022-01-23
    • 2022-10-12
    • 1970-01-01
    • 2021-08-12
    相关资源
    最近更新 更多