根据日期列和日期范围填充熊猫数据框

Sreeram TP

我有一个看起来像这样的熊猫数据框,

    id     start    end
0   1   2020-02-01  2020-04-01
1   2   2020-04-01  2020-04-28

我还有两个其他参数,它们是日期值,例如x和y。x和y始终是该月的第一天。

我想将上面的数据框扩展为以下所示的x =“ 2020-01-01”和y =“ 2020-06-01”,

    id  month   status
0   1   2020-01 -1
1   1   2020-02 1
2   1   2020-03 2
3   1   2020-04 2
4   1   2020-05 -1
5   1   2020-06 -1
6   2   2020-01 -1
7   2   2020-02 -1
8   2   2020-03 -1
9   2   2020-04 1
10  2   2020-05 -1
11  2   2020-06 -1

数据框扩展为每个ID,将在(x,y)行之间添加额外的months_between。然后创建一个状态列并填充值,

  • 如果月份列的值等于开始列的月份,则将状态填充为1
  • 如果month列的值大于开始列的月,但小于或等于结束列的月,则将其填充为2。
  • 如果month列的值小于开始月份的月份,则将其填写为-1。同样,如果月份列值大于-1的结束填充状态月份。

我正在尝试在熊猫中解决此问题而不循环。我当前使用的解决方案是使用循环,并且需要更长的时间才能运行大型数据集。

有任何熊猫功能可以在这里帮助我吗?

感谢@Code不同的解决方案。它解决了这个问题。但是,该问题有一个扩展,即数据帧看起来像这样,

    id     start       end
0   1   2020-02-01  2020-02-20
1   1   2020-04-01  2020-05-10
2   2   2020-04-10  2020-04-28

一个ID可以有多个条目。对于上面的x和y(相隔6个月),我想在数据框中为每个id创建6行。该解决方案当前为数据框中的每一行创建6行。可以,但在处理具有数百万个ID的数据框时并不理想。

代码不同

确保startend列的类型为Timestamp

# Explode each month between x and y
x = '2020-01-01'
y = '2020-06-01'

df['month'] = [pd.date_range(x, y, freq='MS')] * len(df)
df = df.explode('month').drop_duplicate(['id', 'month'])

# Determine the status
df['status'] = -1

cond = df['start'] == df['month']
df.loc[cond, 'status'] = 1

cond = (df['start'] < df['month']) & (df['month'] <= df['end'])
df.loc[cond, 'status'] = 2

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何根据ID和“原始日期”范围填充熊猫数据框?

来自分类Dev

根据日期列熊猫过滤数据框

来自分类Dev

根据熊猫中的groupby在数据框中添加和填充日期行

来自分类Dev

通过日期时间和日期列合并熊猫数据框

来自分类Dev

具有日期范围列的内部联接熊猫数据框

来自分类Dev

根据日期范围和标识符合并数据框

来自分类Dev

熊猫数据框:根据过去的日期和值有条件地添加列

来自分类Dev

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

来自分类Dev

熊猫根据日期范围爆炸列

来自分类Dev

根据日期范围过滤火花数据框

来自分类Dev

根据日期填充带有条目的熊猫数据框

来自分类Dev

熊猫根据日期时间融化数据框并填充所有值NaN

来自分类Dev

熊猫 - 填充datafram了日期范围

来自分类Dev

根据日期范围填充直方图

来自分类Dev

按日期对齐熊猫列数据框

来自分类Dev

如何将数据框的日期和时间列转换为熊猫的日期时间格式?

来自分类Dev

无法比较日期变量和熊猫数据框之间的日期

来自分类Dev

根据日期和日期之前聚合火花数据框

来自分类Dev

用日期时间索引插值并填充熊猫数据框

来自分类Dev

根据今天的日期和其他熊猫条件过滤数据框

来自分类Dev

在数据框熊猫中选择日期范围

来自分类Dev

为熊猫中的特定日期范围过滤数据框

来自分类Dev

如何删除熊猫数据框中的日期范围

来自分类Dev

熊猫数据框基于日期范围的条件累积总和

来自分类Dev

根据熊猫中数据框的日期列对词典列表进行排序

来自分类Dev

根据等于熊猫数据框中特定值的列来定位最短日期?

来自分类Dev

根据日期时间列对熊猫数据框进行切片

来自分类Dev

根据日期填充带有输入的Pandas数据框

来自分类Dev

根据日期从熊猫数据框中删除行

Related 相关文章

  1. 1

    如何根据ID和“原始日期”范围填充熊猫数据框?

  2. 2

    根据日期列熊猫过滤数据框

  3. 3

    根据熊猫中的groupby在数据框中添加和填充日期行

  4. 4

    通过日期时间和日期列合并熊猫数据框

  5. 5

    具有日期范围列的内部联接熊猫数据框

  6. 6

    根据日期范围和标识符合并数据框

  7. 7

    熊猫数据框:根据过去的日期和值有条件地添加列

  8. 8

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

  9. 9

    熊猫根据日期范围爆炸列

  10. 10

    根据日期范围过滤火花数据框

  11. 11

    根据日期填充带有条目的熊猫数据框

  12. 12

    熊猫根据日期时间融化数据框并填充所有值NaN

  13. 13

    熊猫 - 填充datafram了日期范围

  14. 14

    根据日期范围填充直方图

  15. 15

    按日期对齐熊猫列数据框

  16. 16

    如何将数据框的日期和时间列转换为熊猫的日期时间格式?

  17. 17

    无法比较日期变量和熊猫数据框之间的日期

  18. 18

    根据日期和日期之前聚合火花数据框

  19. 19

    用日期时间索引插值并填充熊猫数据框

  20. 20

    根据今天的日期和其他熊猫条件过滤数据框

  21. 21

    在数据框熊猫中选择日期范围

  22. 22

    为熊猫中的特定日期范围过滤数据框

  23. 23

    如何删除熊猫数据框中的日期范围

  24. 24

    熊猫数据框基于日期范围的条件累积总和

  25. 25

    根据熊猫中数据框的日期列对词典列表进行排序

  26. 26

    根据等于熊猫数据框中特定值的列来定位最短日期?

  27. 27

    根据日期时间列对熊猫数据框进行切片

  28. 28

    根据日期填充带有输入的Pandas数据框

  29. 29

    根据日期从熊猫数据框中删除行

热门标签

归档