You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Pandas实现列转行及分组数据行转列?

Pandas列转行与分组后行转列操作

1. 如何使用Pandas将列转换为行?

Pandas中实现列转行(宽表转长表)最常用的是melt()函数,它能将指定列转换为行记录。示例如下:

假设初始宽表数据:

import pandas as pd
df = pd.DataFrame({
    'Agent': ['Abi', 'Bob'],
    '26': [4.5, 4.2],
    '27': [5, 4.8]
})

执行列转行操作:

# id_vars:保留不转换的列;var_name:转换后原列名对应的新列名;value_name:原列值对应的新列名
melted_df = df.melt(id_vars='Agent', var_name='order_date_week', value_name='Average_Rating_Per_Week')

转换后结果:

Agent order_date_week  Average_Rating_Per_Week
0   Abi               26                      4.5
1   Bob               26                      4.2
2   Abi               27                      5.0
3   Bob               27                      4.8

2. 分组后的数据行转列操作

针对你提供的以Agent和order_date_week为MultiIndex的分组数据,使用unstack()方法即可快速实现行转列(长表转宽表),步骤如下:

输入数据(MultiIndex格式):

# 模拟输入数据
data = [
    ('Abi', 26, 4.5),
    ('Abi', 27, 5),
    ('Abi', 28, 3.8),
    ('Abi', 29, 4.0),
    ('Abi', 30, 3.9)
]
grouped_df = pd.DataFrame(data, columns=['Agent', 'order_date_week', 'Average_Rating_Per_Week'])
grouped_df = grouped_df.set_index(['Agent', 'order_date_week'])

执行行转列操作:

# 将order_date_week索引层级转换为列
result_df = grouped_df.unstack(level='order_date_week')
# 移除多层列名的顶层(原列名Average_Rating_Per_Week)
result_df.columns = result_df.columns.droplevel(0)
# 将Agent从索引转为普通列(可选,根据需求调整)
result_df = result_df.reset_index()

最终输出:

Agent   26   27   28   29   30
0   Abi  4.5  5.0  3.8  4.0  3.9

该方法可直接覆盖60个Agent的批量处理,无需额外循环。

内容的提问来源于stack exchange,提问作者NarenCR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 02:15:42