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

如何在Pandas中拼接多个JSON字典列并忽略空值

解决DataFrame多列字典文本拼接为列表(忽略空值)的问题

给定如下结构的DataFrame(json_1、json_2、json_3为字典格式文本):

id json_1 json_2 json_3 
1  {a:b}  {a:c}  {c:d}
2  {a:b}  {b:c}  null
3  {a:c}  {c:d}  {a:g}

需要新增final_json列,将上述三列的非空值拼接为列表,最终得到:

id json_1 json_2 json_3 final_json
 1  {a:b}  {a:c}  {c:d}   [{a:b}, {a:c}, {c:d}]
 2  {a:b}  {b:c}  null    [{a:b}, {b:c}]
 3  {a:c}  {c:d}  {a:g}   [{a:c}, {c:d}, {a:g}] 

解决方案

使用pandas的apply方法结合列表推导式,逐行过滤空值并拼接:

import pandas as pd

# 构造示例数据(已有DataFrame可跳过此步)
data = {
    'id': [1, 2, 3],
    'json_1': ['{a:b}', '{a:b}', '{a:c}'],
    'json_2': ['{a:c}', '{b:c}', '{c:d}'],
    'json_3': ['{c:d}', None, '{a:g}']
}
df = pd.DataFrame(data)

# 生成final_json列
df['final_json'] = df[['json_1', 'json_2', 'json_3']].apply(
    lambda row: [x for x in row if pd.notna(x)],
    axis=1
)

# 输出结果
print(df)

补充说明

  • df[['json_1', 'json_2', 'json_3']]精准选取需要处理的目标列;
  • axis=1指定按行处理数据;
  • 列表推导式会自动过滤每行中的None、NaN等空值,保留有效文本并组成列表;
  • 如果空值是字符串类型的'null',可修改判断条件为:
    lambda row: [x for x in row if x not in (None, 'null')]
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 01:35:27