在新的 Python 列中提取日期时间对象的 utc 格式

Extract utc format for datetime object in a new Python column

如下pandas DataFrame:

|      ID      |     date                              |
|--------------|---------------------------------------|
|     0        |        2022-03-02 18:00:20+01:00      |
|     0        |        2022-03-12 17:08:30+01:00      |
|     1        |        2022-04-23 12:11:50+01:00      |
|     1        |        2022-04-04 10:15:11+01:00      |
|     2        |        2022-04-07 08:24:19+02:00      |
|     3        |        2022-04-11 02:33:22+02:00      |

我想将日期列分成两列,一列为日期,格式为“yyyy-mm-dd”,一列为时间,格式为“hh:mm:ss+tmz”。

也就是说,我想获得以下结果 DataFrame:

|      ID      |     date_only           | time_only      |
|--------------|-------------------------|----------------|
|     0        |        2022-03-02       | 18:00:20+01:00 |
|     0        |        2022-03-12       | 17:08:30+01:00 |
|     1        |        2022-04-23       | 12:11:50+01:00 |
|     1        |        2022-04-04       | 10:15:11+01:00 |
|     2        |        2022-04-07       | 08:24:19+02:00 |
|     3        |        2022-04-11       | 02:33:22+02:00 |

现在我正在使用以下代码,但它没有 return utc +hh:mm 的时间。

df['date_only'] = df['date'].apply(lambda a: a.date())
df['time_only'] = df['date'].apply(lambda a: a.time())
|      ID      |     date_only           |time_only |
|--------------|-------------------------|----------|
|     0        |        2022-03-02       | 18:00:20 |
|     0        |        2022-03-12       | 17:08:30 |
|    ...       |        ...              |  ...     |
|     3        |        2022-04-11       | 02:33:22 |

希望您能帮帮我,先谢谢了。

将列转换为日期时间,然后提取 Series.dt.date and times with timezones by Series.dt.strftime:

df['date'] = pd.to_datetime(df['date'])

df['date_only'] = df['date'].dt.date
df['time_only'] = df['date'].dt.strftime('%H:%M:%S%z')

或通过 space 和 select 第二个列表将转换后的值拆分为字符串:

df['date'] = pd.to_datetime(df['date'])

df['date_only'] = df['date'].dt.date
df['time_only'] = df['date'].astype(str).str.split().str[1]