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

将Pandas字典字符串序列转换为0/1数值列(判断列表非空)

需求说明

现有一个包含字典字符串的Pandas Series,需要将其拆分为a列和b列。规则为:若字典中对应键的列表为空则列值为0,否则为1。

输入示例

list = ["{'a': [], 'b': []}",
        "{'a': [{'c':3,'d':56}], 'b': []}",
        "{'a': [], 'b': [{'c':45,'d':67}]}",
        "{'a': [{'c':48,'d':676}], 'b': [{'c':29,'d':90}]}"]
df = pd.DataFrame(data=list,columns=['A'])

预期输出

ab
00
10
01
11

解决方法

直接通过字符串解析+条件判断实现,代码如下:

import pandas as pd
import ast

# 处理输入数据
df['a'] = df['A'].apply(lambda x: 1 if ast.literal_eval(x)['a'] else 0)
df['b'] = df['A'].apply(lambda x: 1 if ast.literal_eval(x)['b'] else 0)

# 提取目标列
result = df[['a', 'b']]
print(result)

关键说明

  • ast.literal_eval():安全解析字符串形式的字典,避免直接使用eval()带来的风险;
  • 匿名函数lambda:快速判断列表是否非空,非空返回1,空则返回0。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 04:25:21