如何替换JSON数组/Pandas DataFrame中的空方括号
移除/替换 JSON 或 Pandas DataFrame 中的空方括号
一、处理 JSON 数据
直接转字符串替换会破坏原有结构,正确做法是递归遍历 JSON 的嵌套层级,针对性处理空列表:
示例代码(Python)
def process_empty_lists(obj, action="remove", replace_val=None): if isinstance(obj, dict): if action == "remove": # 删除值为空列表的键 return {k: process_empty_lists(v, action, replace_val) for k, v in obj.items() if not (isinstance(v, list) and len(v) == 0)} elif action == "replace": # 将空列表替换为指定值(比如None) return {k: (replace_val if isinstance(v, list) and len(v)==0 else process_empty_lists(v, action, replace_val)) for k, v in obj.items()} elif isinstance(obj, list): # 遍历列表元素,递归处理,同时过滤空列表(按需选择) return [process_empty_lists(item, action, replace_val) for item in obj if not (isinstance(item, list) and len(item) == 0)] else: return obj # 测试用例 sample_json = { "name": "ayan", "tags": [], "details": { "hobbies": [], "age": 25 }, "records": [1, [], 3, {"key": []}] } # 删除空列表对应的键 processed_json_remove = process_empty_lists(sample_json, action="remove") # 把空列表替换为None processed_json_replace = process_empty_lists(sample_json, action="replace", replace_val=None)
这段代码会完整保留原 JSON 的结构类型,仅对空列表做删除或替换操作。
二、处理 Pandas DataFrame
分两种场景针对性处理:
1. 单元格值为空列表
如果 DataFrame 中存在单元格直接是[]的情况,可通过applymap或replace批量处理:
替换为空值(NaN)
import pandas as pd df = pd.DataFrame({ "col1": [1, [], 3], "col2": [[], "test", []], "col3": [{"a": []}, 5, None] }) # 将所有空列表替换为Pandas标准空值 df = df.applymap(lambda x: pd.NA if isinstance(x, list) and len(x) == 0 else x)
递归处理嵌套结构(单元格含字典/列表)
如果单元格内是嵌套的 JSON 结构,可结合上面的递归函数:
df["col3"] = df["col3"].apply(lambda x: process_empty_lists(x) if pd.notna(x) else x)
2. 整列均为空列表
如果某一列所有元素都是空列表,可直接删除该列:
# 筛选出所有值都是空列表的列并删除 df = df.drop(columns=[col for col in df.columns if df[col].apply(lambda x: isinstance(x, list) and len(x)==0).all()])
内容的提问来源于stack exchange,提问作者ayan
相关产品推荐
相关产品推荐

