将列添加到包含跨行复杂逻辑的Python pandas数据框

用户名

我有一个类似下面的pandas数据框,其中包含“ type”和“ val0”列。

type    val0
   0       0
   0       0
   0       0
   1       1
   1       3
   0       0
   0       0
   0       0
   0       0
   1       3
   0       0

列“类型”可以为0或1,并且val0仅对于类型== 1具有有趣的值。

我正在尝试创建两列val1和val2。它们的定义方式类似:

  • 对于val1,我要查找至少1个类型的行的连续出现,取这些出现的val0的总和,并使用该总和来填充先前在类型1的出现到最后一行之间的列。连续出现。
  • 对于val2,我要查找至少一个类型为1的行的连续出现,并在val0中取最小值作为出现次数,然后使用min填充从连续出现的第一行到下一个出现的行的列。类型1。

使用0作为val1和val2的默认值,我将获得上述数据帧的输出:

type    val0    val1    val2
   0       0       4       0
   0       0       4       0
   0       0       4       0
   1       1       4       1
   1       3       4       1
   0       0       3       1
   0       0       3       1
   0       0       3       1
   0       0       3       1
   1       3       3       3
   0       0       0       3

由于第4、5和10行的类型== 1,

  • 对于1-5行,val1是1 + 3 = 4;对于6-10行,val1是3
  • 对于第4-9行,val2为min(1,3)= 1;对于第10-11行,则为3

什么是有效的方法?我的实际数据框有几百万行,我想创建许多类似val1和val2的列,它们使用类型1行的不同聚合。

亚力山大

使用shift-cumsum模式(python pandas-创建一个保持连续值连续计数的列

grouper = df.groupby(df['type'].ne(df['type'].shift()).cumsum())
df['val1'] = grouper['val0'].transform(np.sum)
df['val2'] = grouper['val0'].transform(np.min)
df.loc[df['type'].eq(0), ['val1', 'val2']] = np.nan
df['val1'] = df['val1'].bfill().fillna(0)
df['val2'] = df['val2'].ffill().fillna(0)
>>> df
    type  val0  val1  val2
0      0     0   4.0   0.0
1      0     0   4.0   0.0
2      0     0   4.0   0.0
3      1     1   4.0   1.0
4      1     3   4.0   1.0
5      0     0   3.0   1.0
6      0     0   3.0   1.0
7      0     0   3.0   1.0
8      0     0   3.0   1.0
9      1     3   3.0   3.0
10     0     0   0.0   3.0

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将排序顺序的列添加到Pandas数据框

来自分类Dev

将新列数组添加到Pandas数据框

来自分类Dev

从数据框中包含的列表中将列动态添加到pandas数据框中

来自分类Dev

将Pandas数据框列添加到新数据框

来自分类Dev

将数据添加到 Pandas 中的数据框

来自分类Dev

遍历数据框将行添加到列pandas python

来自分类Dev

如何使用基于集合的逻辑将计算所得的列添加到pandas数据框?

来自分类Dev

将statsmodels“预测”结果添加到Pandas数据框

来自分类Dev

将statsmodels“预测”结果添加到Pandas数据框

来自分类Dev

将系列添加到 Pandas 数据框

来自分类Dev

将日期添加到 Pandas 数据框

来自分类Dev

将包含数据框名称的列添加到数据框列表中

来自分类Dev

Python Pandas数据框

来自分类Dev

快速将多个列添加到Pandas数据框

来自分类Dev

使用pandas操作将列添加到pandas数据框

来自分类常见问题

使用else if逻辑将条件列添加到Pandas Data Frame-Python

来自分类Dev

使用else if逻辑将条件列添加到Pandas Data Frame-Python

来自分类Dev

Python将列添加到Pandas数据框中,这是另一列中的列表元素的计数

来自分类Dev

Python将列添加到Pandas数据框中,这是另一列中的列表元素的计数

来自分类Dev

将列添加到Pandas数据框时如何避免列和DatetimeIndex之间的混淆

来自分类Dev

根据现有列的相邻值将列添加到Pandas数据框

来自分类Dev

将列添加到 Pandas 数据框并遍历其中一列

来自分类Dev

将列从一个数据框添加到另一个python pandas

来自分类Dev

有效地将新列从sqlite db添加到pandas数据框

来自分类Dev

将列表中具有零值的多列添加到Pandas数据框

来自分类Dev

嵌套字典中的Pandas数据框将dict键添加到自己的列

来自分类Dev

使用带索引的字典将列添加到pandas数据框

来自分类Dev

将布尔值列添加到包含变量和时间列的数据框

来自分类Dev

Pandas数据框,如果包含两个列的逻辑与

Related 相关文章

  1. 1

    将排序顺序的列添加到Pandas数据框

  2. 2

    将新列数组添加到Pandas数据框

  3. 3

    从数据框中包含的列表中将列动态添加到pandas数据框中

  4. 4

    将Pandas数据框列添加到新数据框

  5. 5

    将数据添加到 Pandas 中的数据框

  6. 6

    遍历数据框将行添加到列pandas python

  7. 7

    如何使用基于集合的逻辑将计算所得的列添加到pandas数据框?

  8. 8

    将statsmodels“预测”结果添加到Pandas数据框

  9. 9

    将statsmodels“预测”结果添加到Pandas数据框

  10. 10

    将系列添加到 Pandas 数据框

  11. 11

    将日期添加到 Pandas 数据框

  12. 12

    将包含数据框名称的列添加到数据框列表中

  13. 13

    Python Pandas数据框

  14. 14

    快速将多个列添加到Pandas数据框

  15. 15

    使用pandas操作将列添加到pandas数据框

  16. 16

    使用else if逻辑将条件列添加到Pandas Data Frame-Python

  17. 17

    使用else if逻辑将条件列添加到Pandas Data Frame-Python

  18. 18

    Python将列添加到Pandas数据框中,这是另一列中的列表元素的计数

  19. 19

    Python将列添加到Pandas数据框中,这是另一列中的列表元素的计数

  20. 20

    将列添加到Pandas数据框时如何避免列和DatetimeIndex之间的混淆

  21. 21

    根据现有列的相邻值将列添加到Pandas数据框

  22. 22

    将列添加到 Pandas 数据框并遍历其中一列

  23. 23

    将列从一个数据框添加到另一个python pandas

  24. 24

    有效地将新列从sqlite db添加到pandas数据框

  25. 25

    将列表中具有零值的多列添加到Pandas数据框

  26. 26

    嵌套字典中的Pandas数据框将dict键添加到自己的列

  27. 27

    使用带索引的字典将列添加到pandas数据框

  28. 28

    将布尔值列添加到包含变量和时间列的数据框

  29. 29

    Pandas数据框,如果包含两个列的逻辑与

热门标签

归档