Python 如何在DataFrame中分离日期和时间

Python 如何在DataFrame中分离日期和时间,python,python-3.x,pandas,datetime,Python,Python 3.x,Pandas,Datetime,我是Python的初学者。 我有数据框df_all_data_0,列time_在中: 2018-01-13 13:17:29 2018-01-06 17:49:43 2018-01-18 09:44:37 2018-01-04 10:45:52 2018-01-11 12:58:31 我想将日期(例如2018-01-13)和时间(13:17:29)分开。 我尝试的是: pd.to_datetime(df_all_data_0['time_in']). date_str = df_all_dat

我是Python的初学者。 我有数据框
df_all_data_0
,列
time_在
中:

2018-01-13 13:17:29
2018-01-06 17:49:43
2018-01-18 09:44:37
2018-01-04 10:45:52
2018-01-11 12:58:31
我想将日期(例如2018-01-13)和时间(13:17:29)分开。 我尝试的是:

pd.to_datetime(df_all_data_0['time_in']).
date_str = df_all_data_0.strptime('%Y-%m-%d')
但我有一个错误:


AttributeError回溯(最近一次调用)
在()
8.
9
--->10日期\u str=df\u所有\u数据\u 0.strtime(“%Y-%m-%d”)
11#打印(打印日期)
12#打印日期#2017-10-24
/anaconda/lib/python3.6/site-packages/pandas/core/generic.py in_u___getattr____(self,name)
2968如果自身信息轴中的名称:
2969返回自我[姓名]
->2970返回对象。\uuuu getattribute\uuuu(self,name)
2971
2972定义设置属性(自身、名称、值):
AttributeError:“DataFrame”对象没有属性“strTime”

如何更正?

一种方法是使用
pd.Series.dt.normalize
提取时间设置为0的日期和
pd.Series.dt.time
提取时间:

import pandas as pd
from io import StringIO

mystr = StringIO("""2018-01-13 13:17:29
2018-01-06 17:49:43
2018-01-18 09:44:37
2018-01-04 10:45:52
2018-01-11 12:58:31""")

df = pd.read_csv(mystr, sep='|', header=None, names=['DateTime'])

df['DateTime'] = pd.to_datetime(df['DateTime'])
df['Date'], df['Time'] = df['DateTime'].dt.normalize(), df['DateTime'].dt.time

print(df)

#              DateTime       Date      Time
# 0 2018-01-13 13:17:29 2018-01-13  13:17:29
# 1 2018-01-06 17:49:43 2018-01-06  17:49:43
# 2 2018-01-18 09:44:37 2018-01-18  09:44:37
# 3 2018-01-04 10:45:52 2018-01-04  10:45:52
# 4 2018-01-11 12:58:31 2018-01-11  12:58:31
注意,
Time
列将具有
dtype
对象:

print(df.dtypes)

# DateTime    datetime64[ns]
# Date        datetime64[ns]
# Time                object
# dtype: object
print(df.dtypes)

# DateTime    datetime64[ns]
# Date        datetime64[ns]
# Time                object
# dtype: object