python - 计算同一 ID 组内连续 pandas 日期时间值之间的天数差异

标签 python pandas

我正在尝试计算同一 ID 内连续日期时间值之间的天数差异。

这是我的数据框和代码:

d = {'ID': ['a', 'a', 'a', 'a', 'b', 'b', 'b', 'b', 'c', 'c', 'c'],
'date': ['10/1/2010','10/1/2010','10/10/2010','10/10/2010','1/1/2001','3/1/2001','3/1/2001','6/1/2001','1/1/1990','3/1/1990','6/1/1990']}

df = pd.DataFrame(d)
df['date'] = pd.to_datetime(df['date'])
df['Days'] = df.groupby('ID')['date'].diff().fillna('')
df 

但是,当连续日期彼此相同时,我会得到“0 天”。

例如,有两个“2010-10-10”是ID“a”的成员;第一行“2010-10-10”的值为“9 天”,但第二行返回“0 天”。我的目标是编写一个代码,让两者都有“9 天”。

最佳答案

您可以将 0 替换为 nan,然后进行前向填充:

import numpy as np
import pandas as pd
df['Days'] = (df.groupby('ID', group_keys=False)
                .apply(lambda g: g['date'].diff().replace(0, np.nan).ffill()))
df

enter image description here

关于python - 计算同一 ID 组内连续 pandas 日期时间值之间的天数差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41833993/

相关文章:

python - Django REST框架序列化模型组合

python - Cython:C 级 int 与 PyLongObjects

python - 创建一个大的 pd.dataframe - 如何?

Python Pandas csv import "Error tokenizing data"- 显示错误行内容

python - 日志记录关闭 flask 终端输出

python - 使用 for 循环时如何查找 CSV 文件中的行中是否存在列表中的任何元素

python - pandas 0.18.0 中带时间片的滚动计数

大系列的 Pandas value_counts(sort=False) 不起作用

python - 当组来自多索引级别时,按列聚合过滤分组的 Pandas 数据帧

python - 安装 mlxtend 时权限被拒绝 (Python 3)