gpt4 book ai didi

python - Pandas 找到满足条件的日期之间的持续时间?

转载 作者:太空宇宙 更新时间:2023-11-04 02:22:12 25 4
gpt4 key购买 nike

我有一个看起来像这样的 pandas DataFrame:

╔═══╦════════════╦═════════════╗
║ ║ VENDOR ID ║ DATE ║
╠═══╬════════════╬═════════════╣
║ 1 ║ 33 ║ 01/12/2018 ║
║ 2 ║ 33 ║ 03/12/2018 ║
║ 3 ║ 12 ║ 01/08/2018 ║
║ 4 ║ 12 ║ 01/15/2018 ║
║ 5 ║ 12 ║ 01/23/2018 ║
║ 6 ║ 33 ║ 05/12/2018 ║
║ 7 ║ 89 ║ 01/12/2018 ║
╚═══╩════════════╩═════════════╝

我希望得到一个表格,其中包含自上次出现相同供应商 ID 以来的天数,如下所示:

╔═══╦════════════╦═════════════╗
║ ║ VENDOR ID ║ GAP ║
╠═══╬════════════╬═════════════╣
║ 1 ║ 33 ║ ---------- ║
║ 2 ║ 33 ║ 60 ║
║ 3 ║ 12 ║ ---------- ║
║ 4 ║ 12 ║ 7 ║
║ 5 ║ 12 ║ 8 ║
║ 6 ║ 33 ║ 60 ║
║ 7 ║ 89 ║ ---------- ║
╚═══╩════════════╩═════════════╝

我一直在尝试找到一种使用 groupbys 和其他技巧来实现此目的的方法,但似乎没有任何效果。

我确实想出了我认为可以在 pandas 中使用 2 个嵌套 for 循环或 iterrrows 的方法,但由于我的数据集的大小,使用嵌套循环将不会真正起作用。

有人有什么想法吗?

最佳答案

我得到了一些不同的输出:

df['DATE'] = pd.to_datetime(df['DATE'])
df['GAP'] = df.groupby('VENDOR ID')['DATE'].diff().dt.days
print (df)
VENDOR ID DATE GAP
1 33 2018-01-12 NaN
2 33 2018-03-12 59.0
3 12 2018-01-08 NaN
4 12 2018-01-15 7.0
5 12 2018-01-23 8.0
6 33 2018-05-12 61.0
7 89 2018-01-12 NaN

解释:

  1. 转换列 to_datetime
  2. 然后 groupbydiff
  3. 最后将 timedeltas 转换为 days

关于python - Pandas 找到满足条件的日期之间的持续时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51327498/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com