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

如何修改Pandas JSON扁平化后的列名分隔符为下划线?

Pandas DataFrame嵌套列扁平化:替换列名分隔符为下划线

你提到的record_prefix和meta_prefix参数其实是给嵌套数组展开后的字段加前缀用的,不是用来修改嵌套键的默认分隔符的,所以没用是正常的。这里给你两种靠谱的解决办法:

方法一:直接在json_normalize中指定分隔符(推荐)

现在的Pandas(版本≥0.25)的json_normalize(包括pd.io.json.json_normalize)提供了sep参数,专门用来设置嵌套层级的分隔符,直接传sep='_'就能一步到位:

import json
import pandas as pd

# 你的原始DataFrame是df
json_struct = json.loads(df.to_json(orient="records"))
df = pd.json_normalize(json_struct, sep='_')

这样扁平化后的列名会直接用下划线连接,比如level1_level2_level3,不用后续修改。

方法二:事后替换列名中的分隔符

如果你的Pandas版本比较旧,没有sep参数,可以在扁平化完成后直接替换列名里的.:

import json
import pandas as pd

json_struct = json.loads(df.to_json(orient="records"))
df = pd.io.json.json_normalize(json_struct)
# 替换所有列名中的点为下划线
df.columns = df.columns.str.replace('.', '_', regex=False)

加上regex=False是为了避免列名中如果包含正则特殊字符时出现意外匹配,更稳妥。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 21:20:26