【问题标题】:How do I convert a list/dictionary into a Dataframe?如何将列表/字典转换为数据框?
【发布时间】:2019-05-01 01:08:46
【问题描述】:

我有一个 JSON 响应(示例如下),我正在尝试将其转换为 DataFrame。我在将数据列为列 (1 x 346) 等方面遇到了一些问题。我只需要下面列出的 5 列:

area_name,
date,
month,
unemployment_rate,
year

这是我的代码:

edd_ca_df = pd.DataFrame.from_dict(edd_ca, orient="index", 
                                   columns=["area_name", "month", "date", "year", "unemployment_rate"])

这是 JSON 响应的示例:

[[{'area_name': 'California',
   'area_type': 'State',
   'date': '1990-01-01T00:00:00.000',
   'employment': '14099700',
   'labor_force': '14953900',
   'month': 'January',
   'seasonally_adjusted_y_n': 'N',
   'status_preliminary_final': 'Final',
   'unemployment': '854200',
   'unemployment_rate': '5.7',
   'year': '1990'},

 {'area_name': 'California',
   'area_type': 'State',
   'date': '1990-02-01T00:00:00.000',
   'employment': '14206700',
   'labor_force': '15049400',
   'month': 'February',
   'seasonally_adjusted_y_n': 'N',
   'status_preliminary_final': 'Final',
   'unemployment': '842800',
   'unemployment_rate': '5.6',
   'year': '1990'},

任何帮助将不胜感激。

【问题讨论】:

  • 你没有字典,你有一个列表!
  • 我相信 to_dict 的工作方式是它期望所有列值都在同一个条目下,即。 {state: ['CA', 'CA', 'CA'], month: ['Jan', 'Feb', 'Mar']}。您可能需要先重新格式化此文件,但有人可能会有更好的答案。
  • @TeENeTe 是的,但 to_dict() 实际上并不关心这一点:github.com/pandas-dev/pandas/blob/…

标签: python json dictionary dataframe


【解决方案1】:

由于您有一个字典列表,这就像将所有数据传递到新的 DataFrame 并指定要保留的列一样简单:

import pandas as pd

all_data = [{'area_name': 'California',
   'area_type': 'State',
   'date': '1990-01-01T00:00:00.000',
   'employment': '14099700',
   'labor_force': '14953900',
   'month': 'January',
   'seasonally_adjusted_y_n': 'N',
   'status_preliminary_final': 'Final',
   'unemployment': '854200',
   'unemployment_rate': '5.7',
   'year': '1990'},

 {'area_name': 'California',
   'area_type': 'State',
   'date': '1990-02-01T00:00:00.000',
   'employment': '14206700',
   'labor_force': '15049400',
   'month': 'February',
   'seasonally_adjusted_y_n': 'N',
   'status_preliminary_final': 'Final',
   'unemployment': '842800',
   'unemployment_rate': '5.6',
   'year': '1990'}]

keep_columns = ['area_name','date','month','unemployment_rate','year']
df = pd.DataFrame(columns=keep_columns, data=all_data)

print(df)

输出

    area_name                     date     month unemployment_rate  year
0  California  1990-01-01T00:00:00.000   January               5.7  1990
1  California  1990-02-01T00:00:00.000  February               5.6  1990

【讨论】:

  • 谢谢@b-fg。那行得通。我有几个选择可以尝试。 . .
  • 好的,如果这是更简单的解决方案,请考虑投票/接受答案!谢谢!
猜你喜欢
  • 1970-01-01
  • 2021-11-04
  • 1970-01-01
  • 2014-06-12
  • 2021-05-21
  • 1970-01-01
  • 1970-01-01
  • 2013-05-31
相关资源
最近更新 更多