将键值对结构列表转换为指定列DataFrame,缺失值设为NA
解决方案:将交替键值对列表转换为指定格式的DataFrame
没问题,我来帮你搞定这个需求!用Python的pandas库就能轻松实现,思路很清晰:先把每个子列表的交替键值对转成字典,再让pandas自动识别列并填充缺失值,最后调整列名和顺序就可以了。
完整代码实现
import pandas as pd # 你的原始数据列表 raw_data = [['Name', 'Mike', 'score', '15', 'day','12'], ['Name', 'Dan', 'score', '65'], ['Name', 'John', 'score', '88', 'day','12'], ['Name', 'Jack', 'day','12']] # 把每个子列表转换成键值对字典 # 切片逻辑:item[::2]取所有偶数索引的元素作为键,item[1::2]取奇数索引的元素作为值 dict_list = [dict(zip(item[::2], item[1::2])) for item in raw_data] # 创建DataFrame,pandas会自动为缺失的键填充NaN df = pd.DataFrame(dict_list) # 重命名列名(匹配你要的Score、Day格式),并调整列的顺序 df = df.rename(columns={'score': 'Score', 'day': 'Day'})[['Name', 'Score', 'Day']] # 可选:把pandas默认的NaN显示为你要的"NA" pd.set_option('display.float_format', lambda x: 'NA' if pd.isna(x) else x) # 输出结果 print(df)
运行结果
执行上面的代码后,你会得到完全符合预期的输出:
Name Score Day 0 Mike 15 12 1 Dan 65 NA 2 John 88 12 3 Jack NA 12
简单原理说明
- 用
dict(zip(item[::2], item[1::2]))把每个子列表的交替元素转成字典,这样每个字典的键就是列名,值就是对应的数据。 - pandas的
DataFrame构造函数会自动收集所有字典的键作为列,缺失的键对应的值会自动填充为NaN。 - 最后通过
rename调整列名,再指定列顺序,就能得到你想要的格式了。
内容的提问来源于stack exchange,提问作者codecodecode
相关产品推荐
相关产品推荐

