You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取多列timestamp(时间戳)中的最小值?

解决多列时间戳取每行最小值的问题

嘿,这事儿用Python的pandas库就能轻松搞定,咱们一步步来:

步骤1:准备数据并转换时间格式

首先得把你的原始数据转换成pandas的DataFrame,并且把所有timestamp列转换成datetime类型——毕竟字符串没法直接比较时间大小嘛。

import pandas as pd

# 构建你的原始数据
data = {
    'Id': [136, 245, 257, 258, 480],
    'timestamp 1': ['2014-08-27 17:29:23', '2015-09-06 15:46:00', '2014-09-29 22:26:34', pd.NA, '2016-02-02 17:59:54'],
    'timestamp 2': ['2014-11-05 13:02:18', pd.NA, '2016-02-02 17:59:54', pd.NA, '2014-11-05 13:02:18'],
    'timestamp 3': ['2014-09-29 22:26:34', pd.NA, pd.NA, pd.NA, pd.NA]
}

df = pd.DataFrame(data)

# 将所有timestamp列转换为datetime类型
time_cols = [col for col in df.columns if 'timestamp' in col]
df[time_cols] = df[time_cols].apply(pd.to_datetime)

步骤2:计算每行的最小时间戳

用min(axis=1)方法就能对每行取最小值,pandas会自动忽略NaN值,完美符合你的需求:

# 计算每行最小时间戳
df['minimal'] = df[time_cols].min(axis=1)

# 提取需要的Id和minimal列
result = df[['Id', 'minimal']]

步骤3:查看结果

打印result就能得到你想要的输出:

print(result.to_string(index=False))

输出结果和你期望的完全一致:

Id minimal
136 2014-08-27 17:29:23
245 2015-09-06 15:46:00
257 2014-09-29 22:26:34
258 NaT
480 2014-11-05 13:02:18

(注:这里的NaT是pandas对缺失时间值的表示,和你示例里的NaN意思完全一样,要是想换成字符串NaN,可以加一行result['minimal'] = result['minimal'].astype(str).replace('NaT', 'NaN'))

内容的提问来源于stack exchange,提问作者Nabih Bawazir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:11:25