如果在过去N天内满足条件,则创建一个新列python pandas

姜饼

我有一个这样的数据框:

时间戳记 ID。
2020-12-16 25 1个
2020-12-17 45 1个
2020-12-31 40 1个
2021-01-31 37 1个
2020-12-15 12 2
2020-12-16 78。 2。

我想创建一个新列outcome,该的值yesid最近25天没有任何条目。例如,这是预期的输出

时间戳记 ID。 结果
2020-12-16 25 1个
2020-12-17 45 1个 是。
2020-12-31 40 1个 是。
2021-01-31 37 1个 没有。
2020-12-15 12 2 是。
2020-12-16 78。 2。 是。

在上面的示例中,我们可以假设开始日期为2020-12-15因此,我们的比较开始于该日期之后的所有id对于id 1,从开始2020-12-15,它在last 25 days之外具有条目2021-01-31在此之前发生的入口2021-01-312020-12-31这是> 25 days在这个例子。因此,outcome变量取一个值no对于其余的行,这是yes因为对于每个日期,都有一个在25天差异之内的先前条目。

我对如何为此编写算法感到非常困惑。

我会groupby idorder by timestamp然后做rolling的事timestamp创建outcome列?

我对此感到非常困惑,任何帮助将不胜感激!

提前致谢!

洛兹

由于您的计算需要排序,因此我们可以避免分组。排序,采取行差和使用whereNaN的值交叉基团(即对每个ID的最早行)。因为您希望第一个差异是相对的,所以'2020-12-15'我们可以fillna用来查找与该日期的差异,并np.where根据您的条件分配字符串值。

import pandas as pd
import numpy as np

df['timestamp'] = pd.to_datetime(df['timestamp'])
df = df.sort_values(['id', 'timestamp'])

s = (df['timestamp'].diff()
       .where(df['id'].eq(df['id'].shift()))
       .fillna(df['timestamp'] - pd.to_datetime('2020-12-15')))
#0    1 days
#1    1 days
#2   14 days
#3   31 days
#4    0 days
#5    1 days

df['outcome'] = np.where(s <= pd.Timedelta(25, 'D'), 'yes', 'no')
#   timestamp  value  id outcome
#0 2020-12-16     25   1     yes
#1 2020-12-17     45   1     yes
#2 2020-12-31     40   1     yes
#3 2021-01-31     37   1      no
#4 2020-12-15     12   2     yes
#5 2020-12-16     78   2     yes

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python Pandas:如果在另一列中满足条件,则将方法应用于列

来自分类Dev

pandas:如果在循环中满足条件则更新值

来自分类Dev

如果在创建 df pandas python usecols 时不存在,则跳过列

来自分类Dev

如果在另一个数据框列pandas中找到一列中的值,则返回值

来自分类Dev

Pandas - 如果在一行中满足条件,则将值添加到前一行而不进行迭代

来自分类Dev

根据多列中的值和相同条件在pandas中创建一个新列

来自分类Dev

根据不同条件在Pandas数据框中创建一个新列

来自分类Dev

如果列值在列表中,则创建一个列值-python pandas

来自分类Dev

使用Pandas在另一个列中找到满足条件的值的范围

来自分类Dev

Python Pandas,一个dict列,为每个键/值对创建新行

来自分类Dev

Python Pandas:根据另一个数据框的类别值创建新列

来自分类Dev

Python Pandas - 使用currency_converter 创建一个新列

来自分类Dev

使用 python pandas 从现有列创建一个新的地图列

来自分类Dev

Python Pandas:如果在列标签中找到,请替换给定字符

来自分类Dev

Python Pandas:如果在列标签中找到,请替换给定字符

来自分类Dev

Python Pandas - 获取满足条件的第一个值

来自分类Dev

如何使用 Pandas.assign 从 Pandas 数据框索引创建一个新列?

来自分类Dev

Python Pandas数据框创建一个新列,其中包含另一列的减法

来自分类Dev

根据pandas中另一列的状态创建一个新列

来自分类Dev

Pandas 根据另一列的非空值创建一个新列

来自分类Dev

Pandas DataFrame:如果满足多个条件,则将整数分配给新列

来自分类Dev

使用函数根据列满足的条件在 Pandas 中创建新列

来自分类Dev

如果在Pandas中删除重复项时保留一列值不为None的行

来自分类Dev

在Python Pandas DataFrame中创建一个新列,其中包含最小日期,为此显示行项目

来自分类Dev

Python / Pandas-创建一个新列以显示每个组的最大平均值

来自分类Dev

Pandas - 基于一周的最后一个工作日的条件列创建

来自分类Dev

根据数据框的其他列创建一个新的pandas数据框列

来自分类Dev

使用 DataFrame.apply 使用 Pandas 中的特定列创建一个新列

来自分类Dev

如何基于另一个 DataFrame 中的列在 Pandas DataFrame 中创建新列?

Related 相关文章

  1. 1

    Python Pandas:如果在另一列中满足条件,则将方法应用于列

  2. 2

    pandas:如果在循环中满足条件则更新值

  3. 3

    如果在创建 df pandas python usecols 时不存在,则跳过列

  4. 4

    如果在另一个数据框列pandas中找到一列中的值,则返回值

  5. 5

    Pandas - 如果在一行中满足条件,则将值添加到前一行而不进行迭代

  6. 6

    根据多列中的值和相同条件在pandas中创建一个新列

  7. 7

    根据不同条件在Pandas数据框中创建一个新列

  8. 8

    如果列值在列表中,则创建一个列值-python pandas

  9. 9

    使用Pandas在另一个列中找到满足条件的值的范围

  10. 10

    Python Pandas,一个dict列,为每个键/值对创建新行

  11. 11

    Python Pandas:根据另一个数据框的类别值创建新列

  12. 12

    Python Pandas - 使用currency_converter 创建一个新列

  13. 13

    使用 python pandas 从现有列创建一个新的地图列

  14. 14

    Python Pandas:如果在列标签中找到,请替换给定字符

  15. 15

    Python Pandas:如果在列标签中找到,请替换给定字符

  16. 16

    Python Pandas - 获取满足条件的第一个值

  17. 17

    如何使用 Pandas.assign 从 Pandas 数据框索引创建一个新列?

  18. 18

    Python Pandas数据框创建一个新列,其中包含另一列的减法

  19. 19

    根据pandas中另一列的状态创建一个新列

  20. 20

    Pandas 根据另一列的非空值创建一个新列

  21. 21

    Pandas DataFrame:如果满足多个条件,则将整数分配给新列

  22. 22

    使用函数根据列满足的条件在 Pandas 中创建新列

  23. 23

    如果在Pandas中删除重复项时保留一列值不为None的行

  24. 24

    在Python Pandas DataFrame中创建一个新列,其中包含最小日期,为此显示行项目

  25. 25

    Python / Pandas-创建一个新列以显示每个组的最大平均值

  26. 26

    Pandas - 基于一周的最后一个工作日的条件列创建

  27. 27

    根据数据框的其他列创建一个新的pandas数据框列

  28. 28

    使用 DataFrame.apply 使用 Pandas 中的特定列创建一个新列

  29. 29

    如何基于另一个 DataFrame 中的列在 Pandas DataFrame 中创建新列?

热门标签

归档