python - 时间戳分析 Pandas
问题描述
我有一个看起来像这样的数据集:
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
编辑:要将 Timedeltas 转换为天数:
# 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 - 我正在尝试使用 python selenium 启动 chrome 特定配置文件?
- reactjs - 通过本地反应应用程序从 Google 表格中获取数据的响应不一致
- c++ - 有没有办法打印通常分配给指针数组的整数?
- python - fastapi、html 和表单。如何不加载新页面?
- json - Windows Jenkins master 无法在 Linux 代理上正确执行作业
- css - React Native 中带有换行符的多个文本组件
- python - struct.pack "Hq" 的编码大小错误
- html - 我网站的响应能力在 5SE 和 Galaxy Fold 上搞砸了
- android-emulator - Fiddler - 被捕获的 IP 地址而不是来自 android 模拟器的 URL
- java - 如何比较 application.yml 中的值