Python中如何将DataFrame内object类型Series的数据合并到单层列表
问题原因
你当前使用的append()方法会将每行的整个列表作为单个元素添加到目标列表中,因此会生成嵌套结构,和预期的一维列表不符。
解决方法
1. 原有循环修改方案
直接将append()替换为extend()即可,后者会将列表内的元素逐个追加到目标列表中,不会生成嵌套:
fruits_list = [] for i in df['Fruits']: fruits_list.extend(i)
2. Pandas内置简洁方案
调用explode()方法将列表类型的单元格拆分为多行,每行对应列表中的一个元素,再直接转为列表,一行代码即可实现:
fruits_list = df['Fruits'].explode().tolist()
3. 列表推导式方案
通过两层循环遍历所有元素,直接生成目标一维列表:
fruits_list = [fruit for row in df['Fruits'] for fruit in row]
注意事项
如果你的Fruits列元素实际是字符串格式的列表(比如打印出来是"['banana']"而非真实的列表对象),需要先将其转换为真实列表类型再执行上述操作:
import ast df['Fruits'] = df['Fruits'].apply(ast.literal_eval)
内容的提问来源于stack exchange,提问作者swarna
相关产品推荐
相关产品推荐

