You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将键值对结构列表转换为指定列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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 09:03:21