如何拆分Pandas DataFrame中第二列的列表为多列?
拆分DataFrame中包含列表的列成多列
嘿,这个需求我之前处理过好多次,分两种场景来操作就可以轻松搞定:
场景1:所有列表长度一致
如果第1列(索引为1)里的每个列表元素长度都相同,直接用pd.DataFrame()把列表列转换成新的DataFrame,再和原数据合并就行:
# 提取列表列并转换为新的DataFrame expanded_columns = pd.DataFrame(data[1].tolist(), index=data.index) # 给新列设置自定义名称,方便后续识别 expanded_columns.columns = [f'split_col_{i}' for i in range(expanded_columns.shape[1])] # 删除原列表列,再和新列横向合并 final_data = pd.concat([data.drop(columns=[1]), expanded_columns], axis=1) # 查看处理后的结果 final_data.head()
场景2:列表长度不一致
如果列表长度有差异,用apply(pd.Series)会更合适,它会自动给长度不足的行填充NaN,保证数据结构完整:
# 展开列表列,自动补全缺失值为NaN expanded_columns = data[1].apply(pd.Series) # 重命名新列 expanded_columns.columns = [f'split_col_{i}' for i in expanded_columns.columns] # 合并原数据和新展开的列 final_data = pd.concat([data.drop(columns=[1]), expanded_columns], axis=1) final_data.head()
额外小提示
如果你的数据里存在非列表类型的元素(比如偶尔出现的字符串、数值),可以先做个类型校验和转换,避免后续操作报错:
# 把非列表元素转为空列表,确保列内格式统一 data[1] = data[1].apply(lambda x: x if isinstance(x, list) else [])
内容的提问来源于stack exchange,提问作者MrYouMath
相关产品推荐
相关产品推荐

