将字典列表转换为数据框 [重复]

Posted

技术标签:

【中文标题】将字典列表转换为数据框 [重复]【英文标题】:Convert list of Dictionaries to a Dataframe [duplicate] 【发布时间】:2017-04-19 18:49:44 【问题描述】:

我正面临一个基本问题,即转换从用 json 格式的文本解析列中获得的字典列表。以下是数据的简要快照:

[u'PAGE TYPE': u'used-serp.model.brand.city',
 u'BODY TYPE': u'MPV Cars',
  u'ENGINE CAPACITY': u'1461',
  u'FUEL TYPE': u' Diesel',
  u'MODEL NAME': u'Renault Lodgy',
  u'OEM NAME': u'Renault',
  u'PAGE TYPE': u'New-ModelPage.OverviewTab',
 u'PAGE TYPE': u'used-serp.brand.city',
 u'BODY TYPE': u'SUV Cars',
  u'ENGINE CAPACITY': u'2477',
  u'FUEL TYPE': u' Diesel',
  u'MODEL NAME': u'Mitsubishi Pajero',
  u'OEM NAME': u'Mitsubishi',
  u'PAGE TYPE': u'New-ModelPage.OverviewTab',
 u'BODY TYPE': u'Hatchback Cars',
  u'ENGINE CAPACITY': u'1198',
  u'FUEL TYPE': u' Petrol , Diesel',
  u'MODEL NAME': u'Volkswagen Polo',
  u'OEM NAME': u'Volkswagen',
  u'PAGE TYPE': u'New-ModelPage.GalleryTab',

另外,我用来解析的代码如下:

stdf_noncookie = []
stdf_noncookiejson = []

for index, row in df_noncookie.iterrows():
    try:
        loop_data = json.loads(row['attributes'])
        stdf_noncookie.append(loop_data)
    except ValueError:
        loop_nondata = row['attributes']
        stdf_noncookiejson.append(loop_nondata)

stdf_noncookie 是我试图转换成熊猫数据框的字典列表。 'attributes' 是带有 json 格式文本的列。我试图从这个link 中学到一些东西,但这无法解决我的问题。任何将字典列表转换为 panda 数据框的建议/提示都会有所帮助。

【问题讨论】:

【参考方案1】:

我能够通过列表理解来做到这一点。但我的问题是我留下了我的字典的 json 编码,所以它们看起来像字符串。

d = r.zrangebyscore('live-ticks', '-inf', time.time())
dform = [json.loads(i) for i in d]
df = pd.DataFram(dfrom)

【讨论】:

有一个读取json的方法-pd.read_json(data)【参考方案2】:

终于找到了一种将 dict 列表转换为 panda 数据框的方法。下面是代码:

Method A
stdf_noncookie = df_noncookie['attributes'].apply(json.loads)
stdf_noncookie = stdf_noncookie.apply(pd.Series)

Method B
stdf_noncookie = df_noncookie['attributes'].apply(json.loads)
stdf_noncookie = pd.DataFrame(stdf_noncookie.tolist())

方法 A 比方法 B 快得多。我将创建另一个帖子寻求帮助,了解这两种方法之间的区别。此外,在某些数据集上,方法 B 不起作用。

【讨论】:

【参考方案3】:

要将您的 dicts 列表转换为 pandas 数据框,请使用以下命令:

stdf_noncookiejson = pd.DataFrame.from_records(data)

pandas.DataFrame.from_records

DataFrame.from_records (数据,索引=无,排除=无,列=无,coerce_float=False,nrows=无)

您可以在阅读时设置索引,命名列等

如果您使用的是 json,您也可以使用 read_json 方法

stdf_noncookiejson = pd.read_json(data)

pandas.read_json

pandas.read_json (path_or_buf=None, orient=None, typ='frame', dtype=True, convert_axes=True, convert_dates=True, keep_default_dates=True,numpy=False,precision_float=False, date_unit=None, encoding=None, lines=False)

【讨论】:

【参考方案4】:

很简单,你可以使用 pandas DataFrame 构造函数。

import pandas as pd

print (pd.DataFrame(data))

【讨论】:

【参考方案5】:

引用此answer。

假设 d 是您的字典列表,只需使用:

df = pd.DataFrame(d)

【讨论】:

以上是关于将字典列表转换为数据框 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在python中使用pandas将字典列表转换为数据框[重复]

在python中将列表错误地转换为数据框[重复]

将数据框转换为字典 [重复]

将数据框转换为字典 [重复]

将字典的特定字典转换为熊猫数据框 - 熊猫 [重复]

如何将数据框转换为字典 [重复]