你PERIOD_START_TIME
可能不是datetime
。確保它是。
df['PERIOD_START_TIME'] = pd.to_datetime(df['PERIOD_START_TIME'])
訪問通過dt
訪問的date
和time
屬性。
df['date'] = df.PERIOD_START_TIME.dt.date
df['time'] = df.PERIOD_START_TIME.dt.time
print(df)
PERIOD_START_TIME date time
0 2017-01-31 13:00:00 2017-01-31 13:00:00
1 2017-01-31 14:00:00 2017-01-31 14:00:00
2 2017-01-31 15:00:00 2017-01-31 15:00:00
3 2017-01-31 16:00:00 2017-01-31 16:00:00
4 2017-01-31 17:00:00 2017-01-31 17:00:00
5 2017-01-31 18:00:00 2017-01-31 18:00:00
6 2017-01-31 19:00:00 2017-01-31 19:00:00
7 2017-01-31 20:00:00 2017-01-31 20:00:00
8 2017-01-31 21:00:00 2017-01-31 21:00:00
9 2017-01-31 22:00:00 2017-01-31 22:00:00
10 2017-01-31 23:00:00 2017-01-31 23:00:00
11 2017-02-01 00:00:00 2017-02-01 00:00:00
12 2017-02-01 01:00:00 2017-02-01 01:00:00
13 2017-02-01 02:00:00 2017-02-01 02:00:00
14 2017-02-01 03:00:00 2017-02-01 03:00:00
設置
import pandas as pd
from io import StringIO
txt = """PERIOD_START_TIME
01.31.2017 13:00:00
01.31.2017 14:00:00
01.31.2017 15:00:00
01.31.2017 16:00:00
01.31.2017 17:00:00
01.31.2017 18:00:00
01.31.2017 19:00:00
01.31.2017 20:00:00
01.31.2017 21:00:00
01.31.2017 22:00:00
01.31.2017 23:00:00
02.01.2017 00:00:00
02.01.2017 01:00:00
02.01.2017 02:00:00
02.01.2017 03:00:00 """
df = pd.read_csv(StringIO(txt), parse_dates=[0])
謝謝,但它不會工作:AttributeError的:只能使用.DT訪問與datetimelike值 – jovicbg
@ jovicbg看到更新的帖子,看看是否有效。 – piRSquared
現在是未知字符串格式 當我使用此: DF = df.assign(DATETIME = pd.to_datetime(DF [ 'PERIOD_START_TIME'])) DF = df.assign(DATE = DF [ 'DATETIME']。 map(lambda t:t.date())) df = df.assign(TIME = df ['DATETIME']。map(lambda t:t.time())) 它不能打印df,沒有錯誤,但沒有發生,像它被凍結 – jovicbg