【问题标题】:Python Pandas Wide to Long Format Change with Column Titles SplitingPython Pandas 宽到长格式更改与列标题拆分
【发布时间】:2017-03-31 07:39:37
【问题描述】:

我有一个包含以下列标题和行示例的表格:

  Subject  Test1-Result1  Test1-Result2  Test2-Result1  Test2-Result2
0    John             10            0.5             20            0.3

我想把它改成:

  Subject level_1  Result1  Result2
0    John   Test1       10      0.5
1    John   Test2       20      0.3

Test1 的主题列表重复一次,Test2 又重复一次。

我想我可以使用 for 循环来做到这一点,但有没有更 Pythonic 的方式?

为了增加复杂性,我需要为每个测试添加一列额外的信息。我想我可以使用字典,但是如何在每个相应的行中插入有关 Test1 的信息?

【问题讨论】:

    标签: python pandas split reshape


    【解决方案1】:

    您可以将列拆分为多索引列,然后重塑数据框:

    df.set_index('Subject', inplace=True)
    df.columns = df.columns.str.split("-", expand=True)
    df.stack(level=0).rename_axis(['Subject', 'Test']).reset_index()
    

    【讨论】:

    • 这非常有效,帮助我开始理解 Pandas 多行索引。谢谢!
    猜你喜欢
    • 2021-09-18
    • 1970-01-01
    • 1970-01-01
    • 2011-11-23
    • 2018-04-21
    • 2018-09-06
    • 1970-01-01
    • 2016-10-05
    • 2023-01-27
    相关资源
    最近更新 更多