我在将带有日期的Pandas数据帧列转换为数字时遇到问题。
import matplotlib.dates
import datetime
for x in arsenalchelsea['Datum']:
year = int(x[:4])
month = int(x[5:7])
day = int(x[8:10])
hour = int(x[11:13])
minute = int(x[14:16])
sec = int(x[17:19])
arsenalchelsea['floatdate']=date2num(datetime.datetime(year, month, day, hour, minute, sec))
arsenalchelsea
我想在数据框中使用数字中的日期创建一个新列,因为我想稍后使用x-as上的日期创建一个折线图。
这是日期的格式: 2017-11-29 14:06:45
有没有人能解决这个问题?
答案 0 :(得分:1)
切换字符串以获取日期组件是不好的做法。您应该转换为datetime
并直接提取。
在这种情况下,您似乎只能使用pd.to_datetime
,但在下面我还演示了如何在执行转换后提取各种组件。
df = pd.DataFrame({'Date': ['2017-01-15 14:55:42', '2017-11-10 12:15:21', '2017-12-05 22:05:45']})
df['Date'] = pd.to_datetime(df['Date'])
df[['year', 'month', 'day', 'hour', 'minute', 'sec']] = \
df['Date'].apply(lambda x: (x.year, x.month, x.day, x.hour, x.minute, x.second)).apply(pd.Series)
结果:
Date year month day hour minute sec
0 2017-01-15 14:55:42 2017 1 15 14 55 42
1 2017-11-10 12:15:21 2017 11 10 12 15 21
2 2017-12-05 22:05:45 2017 12 5 22 5 45