我正在尝试将一个嵌套的json文件读入Pandas。文件可以在这里找到:European Bank Authorities
我解压文件,然后读取文件。第一行是这样的:
CA_OwnerID EntityCode EntityType Properties Services __EBA_EntityVersion
0 GB_FCA PSD_EMI!GB_FCA!900924 PSD_EMI [{'ENT_NAT_REF_COD': '900924'}, {'ENT_NAM': 'N... [{'GB': ['ES_010', 'PS_010', 'PS_020', 'PS_03A... 20190820191050544
“属性”和“服务”列是问题所在。你知道吗
第一行的属性如下所示:
[{'ENT_NAT_REF_COD': 'C185005'},
{'ENT_NAM': 'Paysafe Prepaid Services Limited'},
{'ENT_ADD': 'Grand Canal House, Upper Grand Canal Street'},
{'ENT_TOW_CIT_RES': 'Dublin 4'},
{'ENT_POS_COD': 'DO4 Y7R5'},
{'ENT_COU_RES': 'IE'},
{'ENT_AUT': ['2019-03-04']}]
第一行的服务如下所示:
[{'IE': ['ES_010', 'PS_010', 'PS_020', 'PS_03B', 'PS_05A', 'PS_05B']},
{'AT': ['ES_010', 'PS_010', 'PS_020', 'PS_03B', 'PS_05A', 'PS_05B']},
{'BE': ['ES_010', 'PS_010', 'PS_020', 'PS_03B', 'PS_05A', 'PS_05B']},
and it keeps on like this
对于数据中的所有行,属性和服务都包含不同数量的字段。你知道吗
我需要把所有的东西都放在一张桌子上,同时扩展属性和服务。你知道吗
所以我试试这个:
prop = json_normalize(data=data[1], record_path='Properties',
meta=['ENT_NAT_REF_COD', 'ENT_NAM','ENT_ADD','ENT_TOW_CIT_RES', 'ENT_POS_COD', 'ENT_COU_RES', 'ENT_AUT', 'ENT_NAM_COM', 'ENT_EXC', 'ENT_DES_ACT_EXC_SCP', 'ENT_TYP_PAR_ENT','ENT_COD_PAR_ENT','DER_CHI_ENT_AUT'], record_prefix='_', errors='ignore')
它扩展了行数,因为除了每行一个列之外,它在所有列中都给出了nan。因此,无法将其连接回主表。因此,行数从原始数据集中的189981行扩展到1701771行。你知道吗
所以我试了这个:
Properties = df['Properties'].apply(pd.Series)
Services = df['Services'].apply(pd.Series)
合并时:
result = pd.concat([df, Properties, Services], axis=1, sort=False)
列包含不同的数据。一列可能在一行中包含:{'ENT_TOW_CIT_RES': 'London'}
和应该在下一行的另一列中包含的内容:{'ENT_ADD': ['207 Regent Street', '3rd Floor']}
在每个列只包含一种类型的信息的大熊猫数据帧中,怎么可能得到这样的结果?你知道吗
此代码适用于:
for i in range(0,len(df_head)):
print(i)
for y in df_head['Properties'][i]:
print(list(y.keys())[0])
print(list(y.values())[0])
df_head.at[i, list(y.keys())[0]] = str(list(y.values())[0])
for y in df_head['Services'][i]:
print(list(y.keys())[0])
print(list(y.values())[0])
df_head.at[i, list(y.keys())[0]] = str(list(y.values())[0])
不过,这可能需要一个星期。所以我希望有更好的方法?你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐