简体   繁体   English

我如何更改字典 output 中的格式 python

[英]How can i change the dictionary output format in python

I am getting output in this format我得到这种格式的 output在此处输入图像描述 But I want output in this format但我想要这种格式的 output在此处输入图像描述

Any Help will be appreciated Thankyou in Advance任何帮助将不胜感激提前谢谢

I've tried to convert my data into an array but it doesn't work as i want我试图将我的数据转换成一个数组,但它并没有像我想要的那样工作

This is my output:这是我的 output:

{'date': '2021-12-30 17:31:05.865139', 'sub_data': [{'key': 'day0', 'value': 255}, {'key': 'day1', 'value': 1}, {'key': 'day3', 'value': 8}, {'key': 'day7', 'value': 2}, {'key': 'day15', 'value': 3}, {'key': 'day30', 'value': 5}]} {'date': '2021-12-30 17:31:05.865139', 'sub_data': [{'key': 'day0', 'value': 255}, {'key': 'day1', 'value ': 1}, {'key': 'day3', 'value': 8}, {'key': 'day7', 'value': 2}, {'key': 'day15', 'value': 3}, {'key': 'day30', 'value': 5}]}

{'date': '2021-12-31 17:31:05.907697', 'sub_data': [{'key': 'day0', 'value': 222}, {'key': 'day1', 'value': 1}, {'key': 'day3', 'value': 0}, {'key': 'day7', 'value': 0}, {'key': 'day15', 'value': 1}, {'key': 'day30', 'value': 0}]}] {'date': '2021-12-31 17:31:05.907697', 'sub_data': [{'key': 'day0', 'value': 222}, {'key': 'day1', 'value ': 1}, {'key': 'day3', 'value': 0}, {'key': 'day7', 'value': 0}, {'key': 'day15', 'value': 1}, {'key': 'day30', 'value': 0}]}]

There are a few ways you can generate a pandas dataframe the way you want.有几种方法可以按照您想要的方式生成 pandas dataframe。 The output data you provide is very nested and you have to pull out data.你提供的output数据嵌套很深,要拉出数据。 A problem is, that in the sub-set data the dictionary keys are called 'key" and not the actual name. With a custom function you can prepare the data as needed:一个问题是,在子集数据中,字典键称为“键”而不是实际名称。使用自定义 function,您可以根据需要准备数据:

Option I:选项一:

def generate_dataframe(dataset):

    # Init empty DataFrame - bad practice
    df_result = pd.DataFrame()

    for data in dataset:

        dataframe_row = {}

        # Convert date
        date_time_obj = datetime.strptime(data['date'], '%Y-%m-%d %H:%M:%S.%f')
        dataframe_row['date'] = date_time_obj.strftime("%d%b%y")

        for vals in data['sub_data']:
            
            dataframe_row[vals['key']] = vals['value']
            
        df_result = df_result.append(dataframe_row, ignore_index=True)
        return df_result

dataset =[output_I,output_II]

df = generate_dataframe(dataset)

Option II : Extract data and transpose sub data选项二:提取数据并转置子数据

def process_sub_data(data):

# convert subdate to dataframe first
df_data = pd.DataFrame(data['sub_data'])

# Transpose dataframe
df_data = df_data.T

# Make first row to column
df_data.columns = df_data.iloc[0]
df_data = df_data.iloc[1:].reset_index(drop=True)

Option III You can try to format nested data with选项 III您可以尝试格式化嵌套数据

df_res = pd.json_normalize(data, max_level=2)

This will not work properly as your column names (day1, ... day30) are not the keys of the dict这将无法正常工作,因为您的列名 (day1, ... day30) 不是字典的键

Hope I could help:)希望我能帮忙:)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM