首页 > 解决方案 > 在 Pandas 中跨多个日期时间列获取最小值

问题描述

我有以下数据框

df = pd.DataFrame({
    'DATE1': ['NaT', 'NaT', '2010-04-15 19:09:08+00:00', '2011-01-25 15:29:37+00:00', '2010-04-10 12:29:02+00:00', 'NaT'],
    'DATE2': ['NaT', 'NaT', 'NaT', 'NaT', '2014-04-10 12:29:02+00:00', 'NaT']})
df.DATE1 = pd.to_datetime(df.DATE1)
df.DATE2 = pd.to_datetime(df.DATE2)

我想在两列中创建一个具有最小值的新列(忽略 NaT),如下所示:

df.min(axis=1)
0   NaN
1   NaN
2   NaN
3   NaN
4   NaN
5   NaN
dtype: float64

如果我+00:00从每个单元格中删除时区信息( ),则生成所需的输出,如下所示:

0                   NaT
1                   NaT
2   2010-04-15 19:09:08
3   2011-01-25 15:29:37
4   2010-04-10 12:29:02
5                   NaT
dtype: datetime64[ns]

为什么添加时区信息会破坏功能?我的数据集有时区,所以我需要知道如何将它们删除作为一种解决方法。

标签: pythonpandasdataframe

解决方案


这是个好问题,这应该是时区的错误

df.apply(lambda x : np.max(x),1)
0                         NaT
1                         NaT
2   2010-04-15 19:09:08+00:00
3   2011-01-25 15:29:37+00:00
4   2014-04-10 12:29:02+00:00
5                         NaT
dtype: datetime64[ns, UTC]

推荐阅读