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

如何将字典键值对分别追加为Python DataFrame的列?

解决方案

假设你的DataFrame名为df,存储字典的列名为dict_col,可以用以下代码实现需求:

import pandas as pd

# 1. 将字典列拆分为键列表和值列表
def split_dict(row):
    items = list(row['dict_col'].items())
    keys = [item[0] for item in items]
    values = [item[1] for item in items]
    return pd.Series([keys, values])

df[['keys', 'values']] = df.apply(split_dict, axis=1)

# 2. 确定最大生成列组数(不超过300组)
max_pairs = min(df['keys'].apply(len).max(), 300)

# 3. 循环生成key_*和value_*列
for i in range(max_pairs):
    df[f'key_{i+1}'] = df['keys'].apply(lambda x: x[i] if i < len(x) else '')
    df[f'value_{i+1}'] = df['values'].apply(lambda x: x[i] if i < len(x) else '')

# 4. 清理临时列(可选)
df = df.drop(['dict_col', 'keys', 'values'], axis=1)

代码说明

  • 第一步通过apply将每行字典拆解为键、值两个列表,存入临时列用于后续处理。
  • 第二步统计所有行的最大键值对数量,同时限制不超过300组,避免生成过多冗余列。
  • 第三步按顺序生成成对的key_n和value_n列,对长度不足的行填充空值,与你要求的输出格式完全匹配。
  • 最后可删除临时列,保留原始数据列和生成的键值对列。

示例验证

用你提供的样本数据测试:

# 构造测试DataFrame
data = {
    'dict_col': [
        {'a': 3, 'b': 2, 'c': 1},
        {'d': 287, 'e': 56, 'f': 17, 'g': 9},
        {'h': 22, 'i': 15, 'a': 7},
        {'g': 17, 'd': 15, 'e': 15, 'f': 7, 'h': 15}
    ]
}
df = pd.DataFrame(data)

运行代码后,生成的列结构和内容将与你给出的示例完全一致。

内容的提问来源于stack exchange,提问作者Peter Park

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 18:35:22