Json to pandas dataframe稍作修改

问题描述 投票:1回答:1

我有一个json数据,如下:

{
"X": "abc",
"Y": 1,
"Z": 4174,

"t_0": 
  {
     "M": "bm",
     "T": "sp",
     "CUD": 4,
"t_1": '
   {
     "CUD": "1",
     "BBC": "09",
     "CPR": -127
  },

  "EVV": "10.7000",
  "BBC": -127,
  "CMIX": "25088"
 },
 "EYR": "sp"
}

问题是转换为python数据帧会创建两个同名CUD的列。一个在t_0下,另一个在t_1下。但是两者都是不同的事件。如何将json标记名称附加到列名称,以便区分两个相同名称的列。类似于t_0_CUD , t_1_CUD

我的代码在下面:

df = pd.io.json.json_normalize(json_data)
df.columns = df.columns.map(lambda x: x.split(".")[-1])
json python-3.x pandas
1个回答
3
投票

如果仅使用解决方案的第一部分,它将返回您所需的内容,而仅使用_.

df = pd.io.json.json_normalize(json_data)
print (df)
     X  Y     Z EYR t_0.M t_0.T  t_0.CUD t_0.t_1.CUD t_0.t_1.BBC  t_0.t_1.CPR  \
0  abc  1  4174  sp    bm    sp        4           1          09         -127   

   t_0.EVV  t_0.BBC t_0.CMIX  
0  10.7000     -127    25088  

如果需要_

df.columns = df.columns.str.replace('\.','_')
print (df)
     X  Y     Z EYR t_0_M t_0_T  t_0_CUD t_0_t_1_CUD t_0_t_1_BBC  t_0_t_1_CPR  \
0  abc  1  4174  sp    bm    sp        4           1          09         -127   

   t_0_EVV  t_0_BBC t_0_CMIX  
0  10.7000     -127    25088  
© www.soinside.com 2019 - 2024. All rights reserved.