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

使用Pandas提取字符串字符并重构DataFrame

解决方法

我来给你一步步搞定这个需求哈,咱们先把数据格式统一,再生成对应的独热编码列就行:

步骤1:统一Groups列的格式

原数据里Groups列混合了列表和单个字符串,咱们先把所有行都转成列表格式,方便后续处理:

import pandas as pd
from itertools import chain

# 你的原始DataFrame
df = pd.DataFrame({ 
    'Date': ['2017-1-1', '2017-1-2', '2017-1-3'], 
    'Groups': [['one','two'], ['one','three'], 'four']
})

# 把单个字符串转为单元素列表,统一格式
df['Groups'] = df['Groups'].apply(lambda x: x if isinstance(x, list) else [x])

步骤2:提取所有唯一的分组值

接下来咱们找出所有出现过的分组,用来生成后续的列:

# 扁平化所有Groups列表,获取唯一值并排序
all_groups = sorted(set(chain(*df['Groups'])))

步骤3:生成独热编码列

对每个分组,判断每行的Groups里是否包含该分组,包含标记1,否则标记0:

for group in all_groups:
    df[group] = df['Groups'].apply(lambda x: 1 if group in x else 0)

可选:还原Groups列的字符串格式

如果想要把Groups列变回你示例里的逗号分隔字符串(比如one, two),可以再加这一步:

df['Groups'] = df['Groups'].apply(lambda x: ', '.join(x))

最终结果

运行完上面的代码后,你就能得到完全符合预期的DataFrame:

Date       Groups  one  two  three  four
0  2017-1-1    one, two    1    1      0     0
1  2017-1-2  one, three    1    0      1     0
2  2017-1-3        four    0    0      0     1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:55:36