如何将列表设为DataFrame表头,嵌套列表对应追加为列数据
如何将两个列表转换为指定格式的Pandas DataFrame?
现有两个列表:
List1 = ['a', 'b', 'c', 'd'] List2 = [['21'], ['23','56','78','67'], ['12','13','14'], ['21','56','78','68']]
需要将List1作为DataFrame的表头,把List2中各子列表对应追加到List1的列中,生成如下格式的DataFrame:
a b c d 0 21 23 12 21 1 56 13 56 2 78 14 78 3 67 68
实现方法
核心思路是先把每个子列表补全到相同长度(以最长子列表的长度为准),缺失位置用空值填充,再转换为DataFrame。
代码实现
import pandas as pd List1 = ['a', 'b', 'c', 'd'] List2 = [['21'], ['23','56','78','67'], ['12','13','14'], ['21','56','78','68']] # 找到最长子列表的长度 max_len = max(len(lst) for lst in List2) # 把每个子列表补全到max_len长度,缺失位置填充空字符串 padded_lists = [lst + ['']*(max_len - len(lst)) for lst in List2] # 转换为DataFrame后转置,再设置列名 df = pd.DataFrame(padded_lists).T df.columns = List1 print(df)
说明
- 先计算
List2中最长子列表的长度(这里是4); - 遍历
List2的每个子列表,用空字符串填充至最长长度,确保所有子列表长度一致; - 先将补全后的列表转为DataFrame,此时每一行对应原列表的子列表元素,通过转置(
.T)让每个子列表对应一列; - 最后设置DataFrame的列名为
List1,即可得到目标格式的结果。
如果希望缺失位置显示为NaN而非空字符串,只需把填充的''替换成pd.NA。
内容的提问来源于stack exchange,提问作者Test Zac
相关产品推荐
相关产品推荐

