【问题标题】:Panda array from list of dictionaries字典列表中的熊猫数组
【发布时间】:2018-05-09 14:49:52
【问题描述】:

我有一个这样的字典列表

[{"Key":[val1,val2,...]}, {"Key2":[val1,val2,...]}, ...]

我想将其转换为 csv 格式,其中键是列标题,而他的值形成列值

为此,我打算使用 pandas 数据框(可以轻松导出到 csv),但我不知道如何将我的值放入数据框。

我已经尝试过myPanda = pd.DataFrame.from_records(data),但很可惜,无济于事。

【问题讨论】:

  • 是您使用 pandas 导出到 csv 的唯一原因吗?

标签: python pandas csv dictionary


【解决方案1】:

我假设您的密钥是唯一的,否则这将没有多大意义。

选项 1

  1. 将您的字典合并到一个字典中
  2. 将字典传递给pd.DataFrame
  3. 使用df.to_csv另存为CSV
dct = [{...}, {...}, ...]

r = {}
for d in dct:
    r.update(d)

pd.DataFrame(r).to_csv('file.csv')

选项 2
使用cytoolz,字典合并还有另一种可能-

from cytoolz.dicttoolz import merge
df = pd.DataFrame(merge(*dct))

选项 3
创建单独的数据框并将它们连接起来 -

df = pd.concat(list(map(pd.DataFrame, dct)), axis=1)

即使您的列表不均匀,此选项也有效。


最后两个解决方案归功于 piRSquared!。

【讨论】:

  • @Bharath 哇...是的。这似乎过于复杂!
  • 如果你从cytoolz.dicttoolz 导入merge 你可以这样做pd.DataFrame(merge(*dct))
  • @Bharath 的解决方案重温pd.DataFrame({k: v for d in dct for k, v in d.items()})
  • 最后一个我发誓...pd.concat(list(map(pd.DataFrame, dct)), axis=1)
  • 最后一个也会注意警告;)
猜你喜欢
  • 2019-08-20
  • 1970-01-01
  • 2018-11-21
  • 2020-07-22
  • 1970-01-01
  • 2021-12-01
  • 2015-06-02
相关资源
最近更新 更多