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

蒙蒂

我正在创建一个从 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

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

合并和合并一系列数据帧

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

Related 相关文章

  1. 1

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

  2. 2

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

  3. 3

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

  4. 4

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

  5. 5

    合并和合并一系列数据帧

  6. 6

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

  7. 7

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

  8. 8

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

  9. 9

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

  10. 10

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

  11. 11

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

  12. 12

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

  13. 13

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

  14. 14

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

  15. 15

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

  16. 16

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

  17. 17

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

  18. 18

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

  19. 19

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

  20. 20

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

  21. 21

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

  22. 22

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

  23. 23

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

  24. 24

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

  25. 25

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

  26. 26

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

  27. 27

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

  28. 28

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

  29. 29

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

热门标签

归档