如何将字典对象解包到一系列数据帧

蒙蒂

我正在创建一个从 ERP 系统获取数据以显示给最终用户的函数。

我想解压缩一个字典对象并用它们创建一系列 Pandas DataFrame。

例如,我有:

troRows

{0: [{'productID': 134336, 'price': '10.0000', 'amount': '1', 'cost': 0}],
 1: [{'productID': 142141, 'price': '5.5000', 'amount': '4', 'cost': 0}],
 2: [{'productID': 141764, 'price': '5.5000', 'amount': '1', 'cost': 0}],
 3: [{'productID': 81661, 'price': '4.5000', 'amount': '1', 'cost': 0}],
 4: [{'productID': 146761, 'price': '5.5000', 'amount': '1', 'cost': 0}],
 5: [{'productID': 143585, 'price': '5.5900', 'amount': '9', 'cost': 0}],
 6: [{'productID': 133018, 'price': '5.0000', 'amount': '1', 'cost': 0}],
 7: [{'productID': 146250, 'price': '13.7500', 'amount': '5', 'cost': 0}],
 8: [{'productID': 149986, 'price': '5.8900', 'amount': '2', 'cost': 0},
  {'productID': 149790, 'price': '4.9900', 'amount': '2', 'cost': 0},
  {'productID': 149972, 'price': '5.2900', 'amount': '2', 'cost': 0},
  {'productID': 149248, 'price': '2.0000', 'amount': '2', 'cost': 0},
  {'productID': 149984, 'price': '4.2000', 'amount': '2', 'cost': 0},

每次函数都需要将 x 个可能具有不同行数的字典解压缩到一系列 DataFrame 中。

例如,此范围的字典将返回 DF0、DF1、DF2、DF3、DF4、DF5、DF6、DF7、DF8。

我可以解压一个字典:

pd.DataFrame(troRows[8])

返回

 amount  cost   price  productID
0       2     0  5.8900     149986
1       2     0  4.9900     149790
2       2     0  5.2900     149972
3       2     0  2.0000     149248
4       2     0  4.2000     149984

我如何构建我的代码,以便它为我的所有字典执行此操作?

耶斯列

DataFrames 字典的解决方案 - 使用字典理解并将索引值设置为字典的键:

dfs = {k: pd.DataFrame(v) for k, v in troRows.items()}
print (dfs)
{0:   amount  cost    price  productID
0      1     0  10.0000     134336, 1:   amount  cost   price  productID
0      4     0  5.5000     142141, 2:   amount  cost   price  productID
0      1     0  5.5000     141764, 3:   amount  cost   price  productID
0      1     0  4.5000      81661, 4:   amount  cost   price  productID
0      1     0  5.5000     146761, 5:   amount  cost   price  productID
0      9     0  5.5900     143585, 6:   amount  cost   price  productID
0      1     0  5.0000     133018, 7:   amount  cost    price  productID
0      5     0  13.7500     146250, 8:   amount  cost   price  productID
0      2     0  5.8900     149986
1      2     0  4.9900     149790
2      2     0  5.2900     149972
3      2     0  2.0000     149248
4      2     0  4.2000     149984}

print (dfs[8])
  amount  cost   price  productID
0      2     0  5.8900     149986
1      2     0  4.9900     149790
2      2     0  5.2900     149972
3      2     0  2.0000     149248
4      2     0  4.2000     149984

一个 DataFrame 的解决方案:

list comprehension与展平一起使用并将其传递给DataFrame构造函数:

troRows = pd.Series([[{'productID': 134336, 'price': '10.0000', 'amount': '1', 'cost': 0}],
  [{'productID': 142141, 'price': '5.5000', 'amount': '4', 'cost': 0}],
  [{'productID': 141764, 'price': '5.5000', 'amount': '1', 'cost': 0}],
 [{'productID': 81661, 'price': '4.5000', 'amount': '1', 'cost': 0}],
 [{'productID': 146761, 'price': '5.5000', 'amount': '1', 'cost': 0}],
  [{'productID': 143585, 'price': '5.5900', 'amount': '9', 'cost': 0}],
 [{'productID': 133018, 'price': '5.0000', 'amount': '1', 'cost': 0}],
  [{'productID': 146250, 'price': '13.7500', 'amount': '5', 'cost': 0}],
  [{'productID': 149986, 'price': '5.8900', 'amount': '2', 'cost': 0},
  {'productID': 149790, 'price': '4.9900', 'amount': '2', 'cost': 0},
  {'productID': 149972, 'price': '5.2900', 'amount': '2', 'cost': 0},
  {'productID': 149248, 'price': '2.0000', 'amount': '2', 'cost': 0},
  {'productID': 149984, 'price': '4.2000', 'amount': '2', 'cost': 0}]])

df = pd.DataFrame([y for x in troRows for y in x])

扁平化数据的另一种解决方案是使用chain.from_iterable

from  itertools import chain

df = pd.DataFrame(list(chain.from_iterable(troRows)))

print (df)
   amount  cost    price  productID
0       1     0  10.0000     134336
1       4     0   5.5000     142141
2       1     0   5.5000     141764
3       1     0   4.5000      81661
4       1     0   5.5000     146761
5       9     0   5.5900     143585
6       1     0   5.0000     133018
7       5     0  13.7500     146250
8       2     0   5.8900     149986
9       2     0   4.9900     149790
10      2     0   5.2900     149972
11      2     0   2.0000     149248
12      2     0   4.2000     149984

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

一系列 JSON 对象到数据帧的转换

来自分类Dev

如何将一系列条件映射为字典中的键?

来自分类Dev

如何将Django的APIRequestFactory与一系列对象一起使用?

来自分类Dev

如何将Django的APIRequestFactory与一系列对象一起使用?

来自分类Dev

如何将一系列数值数据转换为特定的分类数据?

来自分类Dev

如何将数据框变成一系列列表?

来自分类Dev

如何将一系列较小的尺寸连接到熊猫数据框的底部

来自分类Dev

将 Spark 数据帧 Groupby 转换为一系列数据帧

来自分类Dev

如何将一系列 str 列表与一系列 str 连接起来

来自分类Dev

如何将一系列参数应用于 MATLAB 中的一系列函数?

来自分类Dev

熊猫:使用SimpleImputer可以将数据帧转换为一系列数据吗?

来自分类Dev

如何将内容回显到cat生成的一系列新文件中

来自分类Dev

合并和合并一系列数据帧

来自分类Dev

将一系列相同的JSON对象映射到字典

来自分类Dev

将多个类别值分配给r中的一系列数据帧变量

来自分类Dev

如何从数据帧每一行的一系列数字中选择特定值

来自分类Dev

如何将一系列的(例如)熊猫groupby.apply(f)的结果放入数据框的新列中?

来自分类Dev

pd.melt()字典/一系列数据框

来自分类Dev

如何使用GGanimate在一系列数据帧之间建立动画?

来自分类Dev

如何可靠地将大量数据备份到一系列蓝光光盘上?

来自分类Dev

如何将OFFSET()公式与一系列值一起使用?

来自分类Dev

如何将一系列 For 循环块缩短为一个

来自分类Dev

如何将一系列日期更改为一个日期 R?

来自分类Dev

如何将一个数组中的一系列值除以另一个数组中的一系列值

来自分类Dev

如何将一系列索引/类别转换为分类数组

来自分类Dev

如何将一系列数组转换为2D numpy数组

来自分类Dev

如何将一系列if / else if / else if /关系链转换为线性循环代码

来自分类Dev

如何将一系列嵌套列表转换为Miller Columns?

来自分类Dev

PlayFramework:如何将一系列JsValue实例合并到单个JSON文档

Related 相关文章

  1. 1

    一系列 JSON 对象到数据帧的转换

  2. 2

    如何将一系列条件映射为字典中的键?

  3. 3

    如何将Django的APIRequestFactory与一系列对象一起使用?

  4. 4

    如何将Django的APIRequestFactory与一系列对象一起使用?

  5. 5

    如何将一系列数值数据转换为特定的分类数据?

  6. 6

    如何将数据框变成一系列列表?

  7. 7

    如何将一系列较小的尺寸连接到熊猫数据框的底部

  8. 8

    将 Spark 数据帧 Groupby 转换为一系列数据帧

  9. 9

    如何将一系列 str 列表与一系列 str 连接起来

  10. 10

    如何将一系列参数应用于 MATLAB 中的一系列函数?

  11. 11

    熊猫:使用SimpleImputer可以将数据帧转换为一系列数据吗?

  12. 12

    如何将内容回显到cat生成的一系列新文件中

  13. 13

    合并和合并一系列数据帧

  14. 14

    将一系列相同的JSON对象映射到字典

  15. 15

    将多个类别值分配给r中的一系列数据帧变量

  16. 16

    如何从数据帧每一行的一系列数字中选择特定值

  17. 17

    如何将一系列的(例如)熊猫groupby.apply(f)的结果放入数据框的新列中?

  18. 18

    pd.melt()字典/一系列数据框

  19. 19

    如何使用GGanimate在一系列数据帧之间建立动画?

  20. 20

    如何可靠地将大量数据备份到一系列蓝光光盘上?

  21. 21

    如何将OFFSET()公式与一系列值一起使用?

  22. 22

    如何将一系列 For 循环块缩短为一个

  23. 23

    如何将一系列日期更改为一个日期 R?

  24. 24

    如何将一个数组中的一系列值除以另一个数组中的一系列值

  25. 25

    如何将一系列索引/类别转换为分类数组

  26. 26

    如何将一系列数组转换为2D numpy数组

  27. 27

    如何将一系列if / else if / else if /关系链转换为线性循环代码

  28. 28

    如何将一系列嵌套列表转换为Miller Columns?

  29. 29

    PlayFramework:如何将一系列JsValue实例合并到单个JSON文档

热门标签

归档