【问题标题】:pandas list of dicts dataframepandas dicts 数据框列表
【发布时间】:2015-12-14 21:10:13
【问题描述】:

我已经使用这个将一个字典列表变成了一个数据框:

import pandas as pd
d = pd.read_csv('/path/to/file.csv')
res_df = pd.DataFrame(d)
res_df.head()

Pandas 没有成功解释格式,我猜 dict 的键周围没有引号。它看起来像这样:

[{location:'playroom',state:'NY',zip:10011},{..}]

作为一种解决方法,我去掉了“'”、“{}”和“[]”,使文件成为标准 csv。但是,当我从 pd.read_csv 调用 names 参数时,我有两个问题:1 - 名称列是空白的,以及 2 - 我最终得到一个包含数千列的 1 行数据框. res_df.transpose() 不起作用。

如果我的 csv 没有标题行,并且 假设每条记录具有相同数量的字段,为什么我不能给 pandas 我的列名,并创建新的数据框行基于这些参数/指令?

有什么更快/更好的方法来做到这一点?

*更新:这里是 csv 文件的 sn-p:

websitedotcomcom/,Jim,jim@testdotcom,777-444-5555,Long City, NY,1,http://document-url,,another_field,,,true,12 Feb 2015 (18:17),http://website.com/,Jim,jim@test.com,777-444-5555,Long City, NY,1,http://document-url,,another_field,,,true,12 Feb 2015 (18:17)

【问题讨论】:

  • 您不需要构建另一个数据框,只需 read_csv 将返回您的数据框
  • 当然,但两者之间没有区别。我仍然需要一个多行的输出,并且空白标题行仍然存在问题..那里有什么建议吗?
  • 你能举一个文件前五行的例子吗?

标签: python pandas dataframe


【解决方案1】:

这看起来像 JSON 而不是 CSV。你应该使用熊猫read_json method。

df = pd.read_json('/path/to/file.json')

注意:它对有效的 json 敏感,说明您可能需要进行一些字符串操作(例如,将 ' 替换为 ")。

【讨论】:

  • 这不是json,它是一个dicts列表。我正在寻找一种方法将1长行转换为一定数量的字段,以便每个字段具有相同的列数.. 看起来这应该很简单,我已经使用 pandas 从 dicts 列表创建数据帧数百次,直到现在都没有遇到这个问题..
猜你喜欢
  • 1970-01-01
  • 2018-02-05
  • 2017-12-03
  • 2020-11-22
  • 2018-08-04
  • 2017-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多