python - 时间戳分析 Pandas

标签 python pandas dataframe time-series

我有一个看起来像这样的数据集:

ID      DATE       TAG
S3800   1999-07-02 D
S1190   1999-07-02 C
S3131   1999-07-02 C
S3131   1999-07-04 C
S3131   1999-07-05 D

我正在尝试计算每个 ID 的记录之间的最小和最大时间间隔(以天为单位)。例如:

ID    MIN_TIME_GAP MAX_TIME_GAP 
S3131 1            3

DATE 列的格式为 datetine64[ns]。我如何在 Pandas 中实现这一目标?

最佳答案

尝试:

# if they aren't sorted already:
df = df.sort_values(by="DATE")

x = df.groupby("ID").agg(
    MIN_TIME_GAP=("DATE", lambda x: np.min(x.diff())),
    MAX_TIME_GAP=("DATE", lambda x: x.max() - x.min()),
)
print(x.dropna())

打印:

      MIN_TIME_GAP MAX_TIME_GAP
ID                             
S3131       1 days       3 days

编辑:要将 Timedelta 转换为天:

# convert to days:
x["MIN_TIME_GAP"] = x["MIN_TIME_GAP"].dt.days
x["MAX_TIME_GAP"] = x["MAX_TIME_GAP"].dt.days
print(x)

打印:

       MIN_TIME_GAP  MAX_TIME_GAP
ID                               
S3131             1             3

关于python - 时间戳分析 Pandas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68314940/

相关文章:

python - ML管道OneHotEncoder不适合

python - 日期减法导致 "TypeError: cannot perform truediv with this index type datetimeindex"

python - 在转换为 JSON 时在列表中附加元素

python - 用两个条件替换重复项

python - 自定义 python 模块引导 .so 文件而不是 .dylib

python - 如何判断数字是否可以写成n个不同平方的和?

python - 仅包含 ASCII 字符的 UNICODE 字符串是否总是等于 ASCII 字符串?

python - 如何在存在联合条件和两个单独条件的 sframe 中提取行?

python - pandas - 选择关于属性的最后 n 行数据框

python - 迭代 DataFrame,评估列值,并将值设置为第三列