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

如何用Pandas提取单列列表值并生成对应多列(限定7个值)

Pandas提取列中列表值生成多列解决方案

问题场景

给定如下DataFrame:

import pandas as pd
a = pd.DataFrame({"test":["","","","",[1,2,3,4,5,6,6],"","",[11,12,13,14,15,16,17]]})

test列包含空字符串和长度固定为7的列表,需要将列表中的元素分别映射到example_1至example_7列,空值行对应列保持为空。

解决方案

可以通过两种简洁方式实现需求:

方法一:结合apply与pd.Series

# 处理test列:列表转Series,空值行生成7个空值的Series
temp_df = a['test'].apply(lambda x: pd.Series(x) if isinstance(x, list) else pd.Series([None]*7))
# 重命名列
temp_df.columns = [f'example_{i+1}' for i in range(7)]
# 合并到原DataFrame
result = pd.concat([a, temp_df], axis=1)

方法二:先替换空值再直接转DataFrame

# 将空字符串替换为None,避免转列表时出错
a['test'] = a['test'].map(lambda x: x if isinstance(x, list) else None)
# 将列表列直接转为多列,空值自动填充为NaN
temp_df = pd.DataFrame(
    a['test'].tolist(),
    index=a.index,
    columns=[f'example_{i+1}' for i in range(7)]
)
# 合并结果
result = pd.concat([a, temp_df], axis=1)

结果说明

执行后result的example_1至example_7列会对应填充列表中的元素,空字符串所在行的这些列则为NaN,若需要转为空字符串可追加result = result.fillna('')。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 05:10:19