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

如何用pivot将7×2 DataFrame转换为带前缀的1×14单行结构

解决DataFrame折叠为单行多列(带列名前缀)的问题

嘿,我来帮你搞定这个DataFrame的结构转换需求!其实不用纠结pivot(),用转置或者堆叠的方法更直接,完全能实现你要的「原列标签+行索引」作为新列名的效果。

先还原你的原始DataFrame

首先咱们先把你给出的表格转换成可运行的代码:

import pandas as pd

# 构造原始统计DataFrame
data = {
    'polarity': [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
    'subjectivity': [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
}
df = pd.DataFrame(data, index=['count', 'mean', 'min', '25%', '50%', '75%', 'max'])

方法一:转置+重命名列(最直观)

这个方法步骤清晰,容易理解:

  1. 先转置DataFrame,把原来的行索引(count/mean这些)变成列的层级
  2. 把原列名和行索引拼接成新的列名
  3. 直接得到1行14列的结果
# 转置DataFrame,此时原列名变成行索引,原行索引变成列
transposed_df = df.T

# 重命名列,格式为「原列名_行索引」
transposed_df.columns = [f"{col}_{idx}" for idx, col in transposed_df.columns]

# 最终结果就是你要的结构
result = transposed_df

方法二:堆叠+重塑(更灵活)

如果需要处理更复杂的多级索引场景,这个方法更通用:

# 把列和行索引堆叠成多级索引的Series
stacked_series = df.stack()

# 将多级索引合并成单个列名
stacked_series.index = [f"{col}_{idx}" for idx, col in stacked_series.index]

# 转成DataFrame并转置,得到单行结构
result = stacked_series.to_frame().T

最终效果

运行上述代码后,打印result会得到你期望的结构:

polarity_count  polarity_mean  polarity_min  polarity_25%  polarity_50%  polarity_75%  polarity_max  subjectivity_count  subjectivity_mean  subjectivity_min  subjectivity_25%  subjectivity_50%  subjectivity_75%  subjectivity_max
0             1.0            0.0           0.0           0.0           0.0           0.0           0.0                  1.0                 0.0                0.0                0.0                0.0                0.0                0.0

为什么不用pivot()?

pivot()主要用于长表转宽表,需要指定index/columns/values三个参数来聚合数据,而你的需求只是把行索引和原列名拼接成新列名,转置或堆叠的方式更直接高效,不需要额外的聚合逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:30:26