![](/img/trans.png)
[英]How can I change the format of a JSON output from iterating through a python dictionary
[英]How can i change the dictionary output format in python
我得到這種格式的 output 但我想要這種格式的 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-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}]}]
有幾種方法可以按照您想要的方式生成 pandas dataframe。 你提供的output數據嵌套很深,要拉出數據。 一個問題是,在子集數據中,字典鍵稱為“鍵”而不是實際名稱。使用自定義 function,您可以根據需要准備數據:
選項一:
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)
選項二:提取數據並轉置子數據
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)
選項 III您可以嘗試格式化嵌套數據
df_res = pd.json_normalize(data, max_level=2)
這將無法正常工作,因為您的列名 (day1, ... day30) 不是字典的鍵
希望我能幫忙:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.