如何根据行的“属性”将数据框行乘以数组?

fmav

我有一个大熊猫数据框DF,它几乎占用了我的所有RAM。它的索引始终是以下之一:'c1','c2','c3'。

    0   1   2  ...  n
i            
c1  1   8  15
c2  2   9  16
c1  3  10  17
c3  4  11  18
c2  5  12  19
c1  6  13  20
c3  7  14  21
...

我也有一个字典,其中的键“匹配”数据帧索引标签。值是长度为n(等于数据帧列数)的列表/数组。

d = {'c1':[10,10,10,...],'c2':[100,100,100,...],'c3':[1000,1000,1000,...]}

len(d[<allkeys>]) == n >>> True

我想做的是基于行的“属性”的简单数据帧乘法-在这种情况下,它是它的索引,但它可以是列中的值。结果将如下所示:

       0      1      2
i                     
c1    10     80    150
c2   200    900   1600
c1    30    100    170
c3  4000  11000  18000
c2   500   1200   1900
c1    60    130    200
c3  7000  14000  21000

我不想以只能执行DF * DF2的方式来构建第二个数据帧DF2,因为我没有足够的RAM,并且因为这样的数据帧对我而言似乎毫无意义,这意味着它将只是数组的重复/ lists(如果我输入错了,请纠正我)。

我考虑过要再有一个这样的数据框:

       0     1     2
c1    10    10    10
c2   100   100   100
c3  1000  1000  1000

但是当我执行DF * DF2时,不知何故索引被排序了,我不知道如何避免这种情况。结果:

          0         1         2
c1      100       800      1500
c1      300      1000      1700
c1      600      1300      2000
c2    20000     90000    160000
c2    50000    120000    190000
c3  4000000  11000000  18000000
c3  7000000  14000000  21000000

如果您认为还有另一种解决此问题的方法(不同的数据结构,库等),也将不胜感激。

样品代码:

df = pd.DataFrame({0: [1, 2, 3, 4, 5, 6, 7],1: [8, 9, 10, 11, 12, 13, 14], 2: [15, 16, 17, 18, 19, 20, 21]}, index=pd.Index(['c1', 'c2', 'c1', 'c3', 'c2', 'c1', 'c3'], dtype='object', name='i'))
d = {'c1':[10,10,10],'c2':[100,100,100],'c3':[1000,1000,1000]}
df2 = pd.DataFrame.from_dict(d,orient='index')
耶斯列尔

想法是按重复数据删除索引DataFrame.set_indexDataFrame.mul按第一层乘以倍数,最后按DataFrame.reset_index以下顺序删除第二层

df1 = (df.set_index(np.arange(len(df)), append=True)
         .mul(df2, level=0)
         .reset_index(level=1, drop=True))
print (df1)
       0      1      2
i                     
c1    10     80    150
c2   200    900   1600
c1    30    100    170
c3  4000  11000  18000
c2   500   1200   1900
c1    60    130    200
c3  7000  14000  21000

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

根据日期时间条件乘以数据框行

来自分类Dev

如何将熊猫数据框中的每一行乘以不同的值

来自分类Dev

根据外部数组值更改数据框行

来自分类Dev

将2个不同的数据框乘以相同的维并重复行

来自分类Dev

如何根据列的不同属性比较数组中的数据行?

来自分类Dev

如何将数组的行乘以向量的相应行中存储的值?

来自分类Dev

如何使用熊猫根据日期列和天数列将行添加到数据框

来自分类Dev

如何根据列将列名切分到新数据框的行中?

来自分类Dev

如何将单个数组从嵌套数组转换为数据框行?

来自分类Dev

如何根据行的值将每行乘以一个数字?

来自分类Dev

如何使用方法post根据添加的行表将数据保存在数组中?

来自分类Dev

如何将每个熊猫数据框行转换为包含列值作为属性的对象?

来自分类Dev

如何根据python中的条件从数据框中删除行?

来自分类Dev

如何根据行的内容分割pyspark数据框

来自分类Dev

如何根据条件从数据框中删除行

来自分类Dev

如何根据条件对熊猫数据框的行值进行排序?

来自分类Dev

如何根据python中的条件从数据框中删除行?

来自分类Dev

每三行数据框乘以不同的值

来自分类Dev

每三行数据框乘以不同的值

来自分类Dev

将一个数据框的每一行乘以第二个数据框的所有行

来自分类Dev

如何将数据帧的每个元素乘以R中每一行的元素总和?

来自分类Dev

如何将一个数据框的所有数字列乘以一维数组?

来自分类Dev

如何将命名向量作为行添加到数据框中,并根据列名顺序重新排序?

来自分类Dev

如何将命名向量作为行添加到数据框中,并根据列名顺序重新排序?

来自分类Dev

根据上一行中的日期将行添加到数据框中

来自分类Dev

根据行值将行插入到熊猫数据框中?

来自分类Dev

根据R中前一行的条件将行添加到数据框

来自分类Dev

根据条件熊猫过滤数据框行

来自分类Dev

根据列过滤数据框行

Related 相关文章

  1. 1

    根据日期时间条件乘以数据框行

  2. 2

    如何将熊猫数据框中的每一行乘以不同的值

  3. 3

    根据外部数组值更改数据框行

  4. 4

    将2个不同的数据框乘以相同的维并重复行

  5. 5

    如何根据列的不同属性比较数组中的数据行?

  6. 6

    如何将数组的行乘以向量的相应行中存储的值?

  7. 7

    如何使用熊猫根据日期列和天数列将行添加到数据框

  8. 8

    如何根据列将列名切分到新数据框的行中?

  9. 9

    如何将单个数组从嵌套数组转换为数据框行?

  10. 10

    如何根据行的值将每行乘以一个数字?

  11. 11

    如何使用方法post根据添加的行表将数据保存在数组中?

  12. 12

    如何将每个熊猫数据框行转换为包含列值作为属性的对象?

  13. 13

    如何根据python中的条件从数据框中删除行?

  14. 14

    如何根据行的内容分割pyspark数据框

  15. 15

    如何根据条件从数据框中删除行

  16. 16

    如何根据条件对熊猫数据框的行值进行排序?

  17. 17

    如何根据python中的条件从数据框中删除行?

  18. 18

    每三行数据框乘以不同的值

  19. 19

    每三行数据框乘以不同的值

  20. 20

    将一个数据框的每一行乘以第二个数据框的所有行

  21. 21

    如何将数据帧的每个元素乘以R中每一行的元素总和?

  22. 22

    如何将一个数据框的所有数字列乘以一维数组?

  23. 23

    如何将命名向量作为行添加到数据框中,并根据列名顺序重新排序?

  24. 24

    如何将命名向量作为行添加到数据框中,并根据列名顺序重新排序?

  25. 25

    根据上一行中的日期将行添加到数据框中

  26. 26

    根据行值将行插入到熊猫数据框中?

  27. 27

    根据R中前一行的条件将行添加到数据框

  28. 28

    根据条件熊猫过滤数据框行

  29. 29

    根据列过滤数据框行

热门标签

归档