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

如何将多列DataFrame转换为以行列名组合为索引的Series

解决方法:用pandas的stack()实现DataFrame转指定格式Series

没问题,这事儿用pandas的stack()方法就能轻松搞定,正好匹配你想要的效果——把原DataFrame的行索引和列名组合成新Series的索引,对应的数据也会自动对齐。

步骤说明

  1. 先确认你的DataFrame结构(就像你提供的那样);
  2. 使用stack()方法将列标签转换为Series的内层索引,原行索引作为外层,形成多层索引(MultiIndex)的Series;
  3. 可选:如果需要将多层索引合并为单一字符串索引(比如用空格连接列名和行名),可以额外处理。

代码示例

首先根据你提供的数据构造DataFrame,然后执行转换:

import pandas as pd

# 构造你给出的DataFrame
data = {
    'Trades Before': [31540.0, 39.151712, 130.948917, -1611.0, 29.0, 74.0, 99.0, 184.0],
    'Trades After': [1000.0, 42.216, 143.153156, -1371.0, 34.0, 79.0, 109.0, 179.0],
    'Predicted': [1000.0, 90.144811, 1.345089, 88.234987, 89.052902, 89.9792, 91.127657, 93.915568],
    'Change': [-0.968294, 0.078267, 0.093198, -0.148976, 0.172414, 0.067568, 0.10101, -0.027174]
}
df = pd.DataFrame(data, index=['count', 'mean', 'std', 'min', '25%', '50%', '75%', 'max'])

# 核心转换:生成带多层索引的Series
result_series = df.stack()

# 查看你提到的预期示例对应的结果
print(result_series.loc['50%', 'Trades After'])
# 输出:79.0

如果想要把多层索引合并成单一的字符串索引(比如格式为"列名 行名"),可以添加这一步:

# 将多层索引拼接为单一字符串索引
result_series_single = result_series.rename(lambda idx: f"{idx[1]} {idx[0]}")

# 此时查看预期示例的结果
print(result_series_single['Trades After 50%'])
# 输出:79.0

效果说明

  • stack()方法会自动将原DataFrame的每一列“堆叠”到行索引下方,形成(行名, 列名)的多层索引结构,每个索引对应原DataFrame中单元格的值;
  • 如果你需要的是单一字符串索引,用rename()把元组索引拼接成你想要的格式即可,完全灵活可控。

内容的提问来源于stack exchange,提问作者nicholas.reichel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:49:10