使用函数将JSON转换为pnadas Dataframe 和变量

5cg8jx4n  于 2022-12-24  发布在  其他
关注(0)|答案(2)|浏览(115)

我有一个如下格式的JSON文件,我想用一个函数把它转换成一个Pandas Dataframe 。这个函数应该返回 Dataframe 和传感器ID。
传感器数据df,传感器ID =导入器函数(json_str)
·输入1:json_str
o类型:字符串
·输出1:传感器数据df
o类型:Pandas Dataframe
·输出2:传感器ID
o类型:搅拌

{
"SensorId": "B22EA071",
"startUTC": 1671490577,
"endUTC": 1671516101,
"Data": [
    {
        "TimeStamp": 1671490584,
        "V1": 21.1,
    },
    {
        "TimeStamp": 1671490666,
        "V1": 21,
    }]

Dataframe 应该是这样的。
| 开始UTC|世界时结束|时间戳|第1版|
| - ------|- ------|- ------|- ------|
| 小行星1671490577|小行星16715|小行星1671490584|二十一、一|
| 小行星1671490577|小行星16715|小行星16714|二十一|
在python中我怎么能做到这一点呢?

nhhxz33t

nhhxz33t1#

    • 如果我没有误解您的要求**那么这就是您所需要的,使用json_normalize将dict转换为df
import json
import pandas as pd
from pandas.io.json import json_normalize

def ImporterFunction(json_str):
    data = json.loads(json_str)
    sensorID = data['SensorId']
    df = json_normalize(data, 'Data', ['startUTC', 'endUTC'])
    return df, sensorID

json_str = '{"SensorId": "B22EA071","startUTC": 1671490577,"endUTC": 1671516101,"Data": [{"TimeStamp": 1671490584,"V1": 21.1},{"TimeStamp": 1671490666,"V1": 21}]}'
sensor_data_df, sensorID = ImporterFunction(json_str)
print(sensor_data_df)
print(sensorID)
    • 输出:**
TimeStamp    V1    startUTC      endUTC
0  1671490584  21.1  1671490577  1671516101
1  1671490666  21.0  1671490577  1671516101

B22EA071
s5a0g9ez

s5a0g9ez2#

这应该可以。另外注意你的json转储文件缺少结尾'}'。我看到有人也回答了这个问题,我认为这个问题更优雅(使用json_normalize)。
'

import pandas as pd
cols = ['startUTC','endUTC','Timestamp','V1']

def ImporterFunction(json_str):
    data=[]
    for item in json_str['Data']:
        row_data= [json_str['startUTC'],json_str['endUTC']]
        row_data.extend([item['TimeStamp'],item['V1']])
        data.append(row_data)
        sensor_data_df = pd.DataFrame(data=data,columns=cols)
        SensorID = json_str['SensorId']
        return sensor_data_df,SensorID

df,id = ImporterFunction(json_str)
print(id)
df

`

相关问题