很抱歉这么长的邮筒!我是个不识字的人,所以请容忍我:
我正在做一个项目,使用提取的Fitbit静息心率数据来比较一系列年份之间的心率值。fitbit数据导出为一个.json文件,我正试图将该文件转换为.csv以进行进一步分析。我从github中提取了一个脚本,该脚本将.json文件转换为..csv格式的文件,但是当输入静止的心率数据时,我遇到了一些麻烦。
来自 .json:的示例行
[{
"dateTime" : "09/30/16 00:00:00",
"value" : {
"date" : "09/30/16",
"value" : 76.83736383927637,
"error" : 2.737363838373737
}
将嵌套框架转换为列的代码节:
# reading json into dataframes
resting_hr_df = get_json_to_df(file_list=resting_hr_file_list).reset_index()
# Heart rate contains a sub json that are explicitly converted into column
resting_hr_df['date'] = resting_hr_df['value'].transform(lambda x: make_new_df_value(x, 'date'))
resting_hr_df['value'] = resting_hr_df['value'].transform(lambda x: make_new_df_value(x, 'value'))
resting_hr_df['error'] = resting_hr_df['value'].transform(lambda x: make_new_df_value(x, 'error'))
resting_hr_df = resting_hr_df.drop(['value', 'index'], axis=1)
有两个名为'value‘的变量,我认为这是造成问题的原因。
当使用熊猫中的transform函数为嵌套的dataframe键分配变量名时,第二个“value”值将存储为.csv文件中的0。我应该如何存储这些值?
发布于 2021-02-21 18:53:57
问题是,这是一个嵌套的json文件。解决方案是用json
加载json文件,然后用json_normalize
加载到大熊猫中。
import json
import pandas as pd
with open('filename.json') as data_file:
data = json.load(data_file)
resting_hr_df = pd.json_normalize(data)
resting_hr_df
输出resting_hr_df
| | dateTime | value.date | value.value | value.error |
|---:|:------------------|:-------------|--------------:|--------------:|
| 0 | 09/30/16 00:00:00 | 09/30/16 | 76.8374 | 2.73736 |
发布于 2021-02-21 18:50:10
您可以使用默认的熊猫函数(如read_json )轻松地解决此方法。
df = pd.read_json('abc.json', orient='index')
data = df.to_csv(index=False)
print(data)
通过将json文件转换为csv文件可以很容易地解决这个问题。
https://stackoverflow.com/questions/66305759
复制相似问题