在熊猫中旋转数据框[重复]

Posted

技术标签:

【中文标题】在熊猫中旋转数据框[重复]【英文标题】:Pivot a dataframe in pandas [duplicate] 【发布时间】:2022-01-21 10:55:02 【问题描述】:

我有一个数据框,例如:

Name Program INFO1 INFO2 INFO3
Dog  P1      A     B    67
Dog  P2      A     F    89
Cat  P1      L     M    - 
Bird P1      A     -    1
Bird P2      A     B    2
Bird P3      J     K    90

我想转换这个数据框,每个Name只有一行

Name P1_INFO1 P1_INFO2 P1_INFO3 P2_INFO1 P2_INFO2 P2_INFO3 P3_INFO1 P3_INFO2 P3_INFO3
Dog  A        B        67       A        F        89       NA       NA       NA
Cat  L        M        -        NA       NA       NA       NA       NA       NA
Bird A        -        1        A        B        -        J        K        90

【问题讨论】:

【参考方案1】:

堆叠和取消堆叠,然后将多索引列折叠成一层列

s=df.set_index(['Name','Program']).stack().unstack('Name').T
s.columns = [f'a_b' for a, b in s.columns]

    P1_INFO1 P1_INFO2 P1_INFO3 P2_INFO1 P2_INFO2 P2_INFO3 P3_INFO1 P3_INFO2  \
Name                                                                           
Bird        A        -        1        A        B        2        J        K   
Cat         L        M        -      NaN      NaN      NaN      NaN      NaN   
Dog         A        B       67        A        F       89      NaN      NaN   

     P3_INFO3  
Name           
Bird       90  
Cat       NaN  
Dog       NaN  

【讨论】:

【参考方案2】:

df.pivot 与适当的参数一起使用

df.pivot(index=['Name'], columns=['Program'], values=['INFO1', 'INFO2', 'INFO3'])

【讨论】:

以上是关于在熊猫中旋转数据框[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在熊猫数据框中找到重复项? [复制]

在熊猫时间序列数据框中删除重复项

根据索引在熊猫数据框中查找特定列的值[重复]

读取存储在文本文件中的字典并转换为熊猫数据框[重复]

在熊猫数据框中选择行[重复]

如果在熊猫数据框中其他功能[重复]