如何将不同长度的列表补全对齐后创建DataFrame
不等长列表补全并创建DataFrame实现方法
你可以通过以下两种方法实现需求:
方法1:手动补全列表后创建DataFrame
如果需要先得到补全对齐后的列表再生成DataFrame,可按如下逻辑实现:
import pandas as pd import numpy as np # 汇总所有待处理的列表 all_lists = [ ['E139', 'E216', 'E248', 'E111', 'E91', 'E245', 'E88'], ['E102', 'E139', 'E216', 'E238', 'E186', 'E111', 'E91', 'E88'], ['E256', 'E46', 'E232', 'E139', 'E37', 'E216', 'E235', 'E73', 'E91', 'E88'], ['E230', 'E31', 'E198', 'E237', 'E233', 'E10', 'E120', 'E46', 'E82', 'E25', 'E164', 'E253', 'E104', 'E54', 'E18'] ] # 计算所有列表的最大长度 max_length = max(len(lst) for lst in all_lists) # 短列表末尾补NaN,对齐到最大长度 # 如果你需要的是字符串格式的'NaN',把np.nan替换为'NaN'即可 padded_lists = [lst + [np.nan] * (max_length - len(lst)) for lst in all_lists] # 生成DataFrame df = pd.DataFrame(padded_lists)
此时打印padded_lists即可得到你预期的补全后列表效果。
方法2:直接用pandas生成DataFrame(无需手动补全)
pandas的DataFrame构造原生支持不等长列表输入,会自动将缺失位置填充为NaN,代码更简便:
import pandas as pd all_lists = [ ['E139', 'E216', 'E248', 'E111', 'E91', 'E245', 'E88'], ['E102', 'E139', 'E216', 'E238', 'E186', 'E111', 'E91', 'E88'], ['E256', 'E46', 'E232', 'E139', 'E37', 'E216', 'E235', 'E73', 'E91', 'E88'], ['E230', 'E31', 'E198', 'E237', 'E233', 'E10', 'E120', 'E46', 'E82', 'E25', 'E164', 'E253', 'E104', 'E54', 'E18'] ] df = pd.DataFrame(all_lists)
两种方法得到的最终DataFrame结果完全一致。
内容的提问来源于stack exchange,提问作者fredooms
相关产品推荐
相关产品推荐

