在pandas中将日期时间列拆分为日期和时间列。

4

我有一个问题。我的数据框中有一个日期时间列(还有许多其他列)。

df["Date_time"].head()
0    2021-05-15 09:54
1    2021-05-27 17:04
2    2021-05-27 00:00
3    2021-05-27 09:36
4    2021-05-26 18:39
Name: Date_time, dtype: object

我希望将这一列分成两个部分(日期和时间)。
我使用这个公式,它运行良好:
df["Date"] = ""
df["Time"] = ""

def split_date_time(data_frame):
    for i in range(0, len(data_frame)):
        df["Date"][i] = df["Date_time"][i].split()[0]
        df["Time"][i] = df["Date_time"][i].split()[1]

split_date_time(df)

但是否有更优雅的方式?谢谢


如果你只是想把它们分开,可以使用 df[["Date","Time"]] = df["Date_time"].str.split(expand=True) - Henry Yik
1个回答

5

dt访问器可以分别提供datetime

df["Date"] = df["Date_time"].dt.date
df["Time"] = df["Date_time"].dt.time

获取

>>> df

            Date_time        Date      Time
0 2021-05-15 09:54:00  2021-05-15  09:54:00
1 2021-05-27 17:04:00  2021-05-27  17:04:00
2 2021-05-27 00:00:00  2021-05-27  00:00:00
3 2021-05-27 09:36:00  2021-05-27  09:36:00
4 2021-05-26 18:39:00  2021-05-26  18:39:00

谢谢您的回答,但它并不起作用:AttributeError: Can only use .dt accessor with datetimelike values - vojtam
3
@vojtam 是的,您需要具有类似日期时间的序列,而不仅仅是字符串,因此请在上面的代码之前执行 df["Date_time"] = pd.to_datetime(df["Date_time"]) - Mustafa Aydın

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接