如何修改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
相关产品推荐
相关产品推荐

