【问题标题】:Is there a way to transpose this table without a for loop有没有办法在没有 for 循环的情况下转置这个表
【发布时间】:2020-12-20 17:03:31
【问题描述】:

我有以下熊猫数据框:

import pandas as pd

df = pd.DataFrame([[1, 100, 300, 250], 
                   [2, 475, 200, 0], 
                   [3, 125, 365, 100]], columns=['Client_ID', 'Purchase 1', 'Purchase 2', 'Purchase 3'])

╔═══════════╦════════════╦════════════╦════════════╗
║ Client_ID ║ Purchase 1 ║ Purchase 2 ║ Purchase 3 ║
╠═══════════╬════════════╬════════════╬════════════╣
║         1 ║        100 ║        300 ║        250 ║
║         2 ║        475 ║        200 ║          0 ║
║         3 ║        125 ║        365 ║        100 ║
╚═══════════╩════════════╩════════════╩════════════╝

我想将该表转置如下:

╔═══════════╦═══════════╗
║ Client_ID ║ Purchases ║
╠═══════════╬═══════════╣
║         1 ║       100 ║
║         1 ║       300 ║
║         1 ║       250 ║
║         2 ║       475 ║
║         2 ║       200 ║
║         2 ║         0 ║
║         3 ║       125 ║
║         3 ║       365 ║
║         3 ║       100 ║
╚═══════════╩═══════════╝

我试过 df.T 但没有用,我不想使用 for 循环。有没有办法做到这一点?

【问题讨论】:

标签: python pandas


【解决方案1】:

你可以这样做:

df.melt('Client_ID', value_name='Purchases').set_index('Client_ID').sort_index().drop('variable', axis=1)

给予:

           Purchases
Client_ID           
1                100
1                300
1                250
2                475
2                200
2                  0
3                125
3                365
3                100

【讨论】:

    猜你喜欢
    • 2019-01-18
    • 2020-04-07
    • 2018-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-03
    • 1970-01-01
    相关资源
    最近更新 更多