如何将嵌套列表转换为带序号列的Pandas DataFrame?
解决嵌套列表转指定结构DataFrame的问题
你可以通过以下两种简洁方法实现需求:
方法一:列表推导式构建扁平数据
先将嵌套列表转换成包含元素和对应key的扁平元组列表,再转换为DataFrame:
import pandas as pd lst = [['A','B'], ['C','D','E'], ['E','F','G','H']] # 遍历子列表,为每个元素绑定对应的key(子列表序号从1开始) flat_data = [(item, sublist_idx + 1) for sublist_idx, sublist in enumerate(lst) for item in sublist] # 转换为DataFrame并指定列名 df = pd.DataFrame(flat_data, columns=['lst', 'key'])
方法二:利用pandas的explode方法
先将子列表与对应的索引绑定,再通过explode拆分每个子列表的元素:
import pandas as pd lst = [['A','B'], ['C','D','E'], ['E','F','G','H']] # 将子列表转为Series,同时保留索引作为key的基础 s = pd.Series(lst).reset_index() # 修改列名,将索引转为key并调整为从1开始 s.columns = ['key', 'lst'] s['key'] += 1 # 拆分每个子列表的元素为单独行 df = s.explode('lst')
两种方法最终生成的DataFrame都符合你的需求:
| lst | key |
|---|---|
| A | 1 |
| B | 1 |
| C | 2 |
| D | 2 |
| E | 2 |
| E | 3 |
| F | 3 |
| G | 3 |
| H | 3 |
内容的提问来源于stack exchange,提问作者Learning
相关产品推荐
相关产品推荐

