【问题标题】:Timestamp analysis Pandas时间戳分析 Pandas
【发布时间】:2021-09-19 16:56:42
【问题描述】:

我有一个如下所示的数据集:

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 中实现这一点?

【问题讨论】:

  • 为什么S31312的MIN_TIME_GAP是? 1999-07-05 和 1999-07-04 之间是一天,不是吗?
  • 是的,对不起,我的错,只是我的计算错误。编辑以反映它。谢谢!!

标签: python pandas dataframe time-series


【解决方案1】:

试试:

# 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

编辑:将时间增量转换为天数:

# 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

【讨论】:

  • 并将 tiemdeltas 转换为天数
  • @jezrael 我已经添加了 :)
猜你喜欢
  • 2018-09-04
  • 2018-06-20
  • 2017-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-10
  • 2018-01-03
相关资源
最近更新 更多