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