我想将datetime列转换为pandas数据框索引。这是我的数据框
Date Observed Min Max Sum Count
0 09/15/2018 12:00:00 AM 2 0 2 10 5
1 09/15/2018 01:00:00 AM 1 0 2 25 20
2 09/15/2018 02:00:00 AM 1 0 1 21 21
3 09/15/2018 03:00:00 AM 1 0 2 23 22
4 09/15/2018 04:00:00 AM 1 0 1 21 21
我希望日期成为数据框的索引。
我一直在寻找答案,并尝试过这段代码
dateparse = lambda dates: pd.datetime.strptime(dates, '%m/%d/%Y %I:%M:%S').strftime('%m/%d/%Y %I:%M:%S %p')
data = pd.read_csv('mandol.csv', sep=';', parse_dates=['Date'], index_col = 'Date', date_parser=dateparse)
data.head()
但结果仍然是错误-> ValueError: unconverted data remains: AM
我该如何解决?
答案 0 :(得分:3)
使用pd.to_datetime()
转换 Date 列,并使用set_index()
将其设置为数据框索引。
import pandas as pd
>>>df
Date Observed Min Max Sum Count
0 09/15/2018 12:00:00 AM 2 0 2 10 5
1 09/15/2018 01:00:00 AM 1 0 2 25 20
2 09/15/2018 02:00:00 AM 1 0 1 21 21
3 09/15/2018 03:00:00 AM 1 0 2 23 22
4 09/15/2018 04:00:00 AM 1 0 1 21 21
df.Date = pd.to_datetime(df.Date)
df.set_index('Date', inplace=True)
>>>df
Unnamed: 0 Observed Min Max Sum Count
Date
2018-09-15 00:00:00 0 2 0 2 10 5
2018-09-15 01:00:00 1 1 0 2 25 20
2018-09-15 02:00:00 2 1 0 1 21 21
2018-09-15 03:00:00 3 1 0 2 23 22
2018-09-15 04:00:00 4 1 0 1 21 21
答案 1 :(得分:1)
看看set_index()
方法。
答案 2 :(得分:1)
我们可以将索引设置为Date
转换后的to_datetime
列值(我使用pop
来获取Date
列的值并将其从中删除同时添加DataFrame):
df.index = pd.to_datetime(df.pop('Date'))
print(df)
输出:
Observed Min Max Sum Count
Date
2018-09-15 00:00:00 2 0 2 10 5
2018-09-15 01:00:00 1 0 2 25 20
2018-09-15 02:00:00 1 0 1 21 21
2018-09-15 03:00:00 1 0 2 23 22
2018-09-15 04:00:00 1 0 1 21 21
答案 3 :(得分:0)
如果使用此代码,它将第二列(日期)设置为索引,并使用pandas.to_datetime提供的标准日期时间解析器对其进行转换:
ds = pd.read_csv('mandol.csv', sep=';', index_col=1, parse_dates=True)
parse_dates=True
自动将索引转换为熊猫Datetime对象。