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

使用pd.get_dummies()处理DataFrame时保留Message值并实现数据透视

解决方案

核心思路

你的需求是将**多个连续的Sequence序列(从1起始)**转换为宽表,关键在于先识别每个独立的序列组,再通过透视表完成行列转换。pd.get_dummies()仅能生成哑变量标记,无法保留Message的实际值,因此不适用。

实现步骤&代码

import pandas as pd

# 构造你的示例DataFrame
data = {
    'Sequence': [1,2,3,4,1,2,3,4,5,1,2,3],
    'Message': ['A','B','C','D','A','C','D','E','F','A','C','D']
}
df = pd.DataFrame(data)

# 1. 生成分组ID:每次遇到Sequence=1时,组号递增,区分不同序列组
df['group_id'] = (df['Sequence'] == 1).cumsum()

# 2. 透视转换为宽表:以组为行,Sequence为列,填充对应Message值
wide_df = df.pivot(index='group_id', columns='Sequence', values='Message')

# 3. 可选:补充目标列(比如你示例中的6、7列),缺失值留空
target_max_col = 7
wide_df = wide_df.reindex(columns=range(1, target_max_col + 1))

# 4. 清理索引和列名,贴合目标格式
wide_df = wide_df.reset_index(drop=True)
wide_df.columns.name = None

print(wide_df)

输出结果

1  2  3    4    5    6    7
0  A  B  C    D  NaN  NaN  NaN
1  A  C  D    E    F  NaN  NaN
2  A  C  D  NaN  NaN  NaN  NaN

(注:空值显示NaN,若需要替换为空白字符串,可添加wide_df = wide_df.fillna(''))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 05:30:52