[英]How to create a pandas dataframe with 2 dataframes one as columns and one as rows
[英]How to convert pandas dataframe rows into their own dataframes?
我有一组数据,例如:
values site_name timezone variable_name
0 [{'value': SAN JOAQUIN PST degC
[{'value': '9.3',
'qualifiers': ['P'],
'date': '2022-01-05'
},
{'value': '9.4',
'qualifiers': ['P'],
'date': '2022-01-05'
}]
}]
1 [{'value': SAN JOAQUIN PST pH
[{'value': '7.5',
'qualifiers': ['P'],
'date': '2022-01-05'
},
{'value': '7.8',
'qualifiers': ['P'],
'date': '2022-01-05'
}]
}]
其中的值是一个长列表,每一行都有这些嵌套的值集。 我如何使用 pandas 将每个 variable_name 转换为它们自己的 dataframe?
我想要类似的东西:
degC table
value date qualifier
0 9.3 2022-01-05 P
1 9.4 2022-01-05 P
pH table
value date qualifier
0 7.5 2022-01-05 P
1 7.8 2022-01-05 P
到目前为止,这是我尝试过的:
df = pd.json_normalize(file)
for i in range(len(df.index)):
pd.json_normalize(df.iloc[i])
上面显示的原始输入:
df = pd.DataFrame({'values':[[{'value': [{'value': '9.3', 'qualifiers': ['P'], 'date': '2022-01-05'},
{'value': '9.4', 'qualifiers': ['P'], 'date': '2022-01-05'}]
}],
[{'value': [{'value': '7.5', 'qualifiers': ['P'], 'date': '2022-01-05'},
{'value': '7.8', 'qualifiers': ['P'], 'date': '2022-01-05'}]
}]],
'variable_name':['degC','pH']})
您所需的数据作为value
键的值存在于'values'
列的每一行中。 您可以使用str.get
方法来访问这些字典列表。
然后使用iterrows
方法,遍历df
的行并将这些列表转换为pd.DataFrame
(也使用explode
方法从列表中取出qualifiers
值)并收集字典中的所有数据。
df['values'] = df['values'].str[0].str.get('value')
out = {}
for _, d in df.iterrows():
out[d['variable_name']] = pd.DataFrame(d['values']).explode('qualifiers')
然后例如, print(out['degC'])
吐出
value qualifiers date
0 9.3 P 2022-01-05
1 9.4 P 2022-01-05
和print(out['pH'])
:
value qualifiers date
0 7.5 P 2022-01-05
1 7.8 P 2022-01-05
带数据框:
>>> df
values variable_name
0 [{'value': [{'value': '9.3', 'qualifiers': ['P'] ... degC
1 [{'value': [{'value': '7.5', 'qualifiers': ['P'] ... pH
使用这个:
new_df = df['values'].apply(lambda x: pd.DataFrame(x[0]['value']))
new_df.index = df['variable_name']
>>> new_df.loc['degC']
value qualifiers date
0 9.3 [P] 2022-01-05
1 9.4 [P] 2022-01-05
>>> new_df.loc['pH']
value qualifiers date
0 7.5 [P] 2022-01-05
1 7.8 [P] 2022-01-05
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.