根据上述逻辑,将数据帧从宽域减少到长域的有效方法

尼尔·迪鲁克卡(Neel Deorukhkar)

我有一个带有Col名称为'a','b','c'的DataFrame

#Input
import pandas as pd

list_of_dicts = [
  {'a' : 0, 'b' : 4, 'c' : 3},
  {'a' : 1, 'b' : 1, 'c' : 2  },
  {'a' : 0, 'b' : 0, 'c' : 0  },
  {'a' : 1, 'b' : 0, 'c' : 3  },
  {'a' : 2, 'b' : 1, 'c' : 0  }
]

df = pd.DataFrame(list_of_dicts)
#Input DataFrame
-----|------|------|-----|
     |  a   |  b   |  c  |   
-----|------|------|-----|
 0   |  0   |  4   |  3  |       
 1   |  1   |  1   |  2  |      
 2   |  0   |  0   |  0  |      
 3   |  1   |  0   |  3  |      
 4   |  2   |  1   |  0  |   

我想将宽的DataFrame减少为One列,将列名作为DataFrame值乘以相应的行值。该操作必须按行进行。

#Output
    |  Values |
-----------------  
 0  |    b    |
 1  |    b    |
 2  |    b    |
 3  |    b    |
 4  |    c    |
 5  |    c    |
 6  |    c    |
 7  |    a    |
 8  |    b    |
 9  |    c    |
 10 |    c    |
 11 |    a    |
 12 |    c    |
 13 |    c    |
 14 |    c    |
 15 |    a    |
 17 |    a    |
 18 |    b    |

说明:输入数据帧中的行0具有4'b'和3'c',因此输出数据帧的前七个元素为bbbbccc

第1行类似地具有1'a'1'b'和2'c',因此输出将以abcc作为接下来的4个元素

第2行的跨度为0,因此将完全跳过。

输出的顺序非常重要例如,第一行具有'4'b和3'c',因此输出DataFrame必须为bbbbccc,因为列'b'在列'c'之前。该操作必须是从左到右逐行的。

我正在尝试找到一种有效的方法来实现这一目标。真正的数据集太大,我计算。请提供python3解决方案。

sammywemmy

堆叠数据(您也可以融化数据),并删除计数为零的行。最后,使用numpy.repeat构建一个新数组,并从中构建新的数据

reshape = df.stack().droplevel(0).loc[lambda x: x != 0]
pd.DataFrame(np.repeat(reshape.index, reshape), columns=['values'])

 values
0   b
1   b
2   b
3   b
4   c
5   c
6   c
7   a
8   b
9   c
10  c
11  a
12  c
13  c
14  c
15  a
16  a
17  b

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

重塑数据帧(从宽到长)

来自分类Dev

如何将具有不同列名的具有不同列名的数据帧从宽到长转换

来自分类Dev

将数据帧乘以向量的最有效方法

来自分类Dev

将数据帧乘以向量的最有效方法

来自分类Dev

进行以下从宽到长格式的数据帧转换的好方法?

来自分类Dev

从宽到长转置熊猫数据帧

来自分类Dev

R:覆盖从宽格式到长格式的数据帧

来自分类Dev

检查有效域

来自分类Dev

检查有效域

来自分类Dev

使用 dplyr 将数据帧从宽转换为长

来自分类Dev

r将具有模式的列名的数据集从宽到长转换

来自分类Dev

将列名中具有多个键的数据框从宽到长重塑

来自分类Dev

根据R数据帧中其他列的值缩放列的有效方法

来自分类Dev

根据R数据帧中其他列的值缩放列的有效方法

来自分类Dev

将数据帧(或小标题)转换为小标题的有效方法

来自分类Dev

一种将命名/嵌套列表转换为数据帧的有效方法

来自分类Dev

在R中的长数据帧上有效使用功能

来自分类Dev

按行组合熊猫数据帧的有效方法

来自分类Dev

按时间间隔合并数据帧的有效方法

来自分类Dev

在tidyr中,函数“ gather”用于从宽到长映射数据帧的条件是什么?

来自分类Dev

从宽到长收集数据帧,并使用R中的tidyverse生成新列

来自分类Dev

重塑R中的数据帧:从宽到长,但“可变”列的长度不相等

来自分类Dev

将数据帧从宽转换为长,但将堆叠的行作为列

来自分类Dev

熊猫从宽到长的数据转换

来自分类Dev

从宽到长的数据转换多列

来自分类Dev

熊猫从宽到长的数据转换

来自分类Dev

从宽到长重塑调查数据集

来自分类Dev

如何有效地减少这个逻辑语句?

来自分类Dev

如何将分离的数据存储到数据库中的最有效方法

Related 相关文章

  1. 1

    重塑数据帧(从宽到长)

  2. 2

    如何将具有不同列名的具有不同列名的数据帧从宽到长转换

  3. 3

    将数据帧乘以向量的最有效方法

  4. 4

    将数据帧乘以向量的最有效方法

  5. 5

    进行以下从宽到长格式的数据帧转换的好方法?

  6. 6

    从宽到长转置熊猫数据帧

  7. 7

    R:覆盖从宽格式到长格式的数据帧

  8. 8

    检查有效域

  9. 9

    检查有效域

  10. 10

    使用 dplyr 将数据帧从宽转换为长

  11. 11

    r将具有模式的列名的数据集从宽到长转换

  12. 12

    将列名中具有多个键的数据框从宽到长重塑

  13. 13

    根据R数据帧中其他列的值缩放列的有效方法

  14. 14

    根据R数据帧中其他列的值缩放列的有效方法

  15. 15

    将数据帧(或小标题)转换为小标题的有效方法

  16. 16

    一种将命名/嵌套列表转换为数据帧的有效方法

  17. 17

    在R中的长数据帧上有效使用功能

  18. 18

    按行组合熊猫数据帧的有效方法

  19. 19

    按时间间隔合并数据帧的有效方法

  20. 20

    在tidyr中,函数“ gather”用于从宽到长映射数据帧的条件是什么?

  21. 21

    从宽到长收集数据帧,并使用R中的tidyverse生成新列

  22. 22

    重塑R中的数据帧:从宽到长,但“可变”列的长度不相等

  23. 23

    将数据帧从宽转换为长,但将堆叠的行作为列

  24. 24

    熊猫从宽到长的数据转换

  25. 25

    从宽到长的数据转换多列

  26. 26

    熊猫从宽到长的数据转换

  27. 27

    从宽到长重塑调查数据集

  28. 28

    如何有效地减少这个逻辑语句?

  29. 29

    如何将分离的数据存储到数据库中的最有效方法

热门标签

归档