使用panda访问json输出的列时出错



我有一个来自像这个这样的API的json输出

{'trainingInput': 
{'pythonModule': 'marketprice_aitp.predict', 
'region': 'us-central1', 
'runtimeVersion': '2.4', 
, 
'pythonVersion': '3.7', 
'serviceAccount': 'projects/hh'}, 

'createTime': '2021-11-08T06:49:34Z', 
'startTime': '2021-11-08T07:07:33Z', 
'endTime': '2021-11-08T07:07:33Z', 
'state': 'SUCCEEDED', 
'trainingOutput': {'consumedMLUnits': 0.09}, 
'etag': '+YVkodd5cKA='}

我有一个pandas数据帧,它存储这个输出。我正在尝试访问特定的专栏,如belkow

df['region'] = df['trainingInput']["region"]
df['serviceaccount'] = df['trainingInput']["serviceAccount"]

我试过双引号和

df['region'] = job[''''trainingInput''''][''''region''''']
df['serviceaccount'] = job[''''trainingInput''''][''''serviceAccount''''']

但我犯了一个关键错误。请告诉我你的想法。

您正在在行/列的交叉点处寻找单个值。您可以在此处使用.at

data = {'trainingInput': {'pythonModule': 'marketprice_aitp.predict', 
'region': 'us-central1', 'runtimeVersion': '2.4', 'pythonVersion': '3.7', 'serviceAccount': 'projects/hh'}, 
'createTime': '2021-11-08T06:49:34Z', 'startTime': '2021-11-08T07:07:33Z', 'endTime': '2021-11-08T07:07:33Z', 
'state': 'SUCCEEDED', 'trainingOutput': {'consumedMLUnits': 0.09}, 'etag': '+YVkodd5cKA='}
df = pd.DataFrame(data)

In [191]: df.at['region', 'trainingInput']
Out[191]: 'us-central1'
In [192]: df.at['serviceAccount', 'trainingInput']
Out[192]: 'projects/hh'

我实际操作了我的数据帧,将其转换为正确的dict格式。

k_1  = df['trainingInput'].values
for i in k_1:
m= json.dumps(i)
k = json.loads(m)
df['serviceaccount'] =k['serviceAccount']

它奏效了。

相关内容

最新更新