在pandas系列

时间:2018-04-02 19:19:08

标签: python pandas dataframe

我在将带有日期的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

有没有人能解决这个问题?

1 个答案:

答案 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