我有一堆天气数据需要重新映射到Pandas。 我正在努力转换第一栏#Time;#Time;#39;到日期时间索引。 我一直在扫描论坛,但无法解决问题。
以下是数据样本:
Time TemperatureF DewpointF
1/1/2015 0:01 31.7 27.1
1/1/2015 0:06 31.7 27.4
1/1/2015 0:11 31.6 27.3
1/1/2015 0:16 31.6 27.3
1/1/2015 0:21 31.5 26.9
1/1/2015 0:26 31.5 26.9
1/1/2015 0:31 31.5 26.9
这是我用来重新索引的代码的最新版本。
非常感谢任何帮助!
df = df.set_index('Time')
df.index = df.index.to_datetime()
答案 0 :(得分:1)
尝试使用pd.to_datetime()
代替df.index.to_datetime()
,并将结果用作index
。
如果格式无法正确转换,则需要添加format
参数,该参数使用these命名约定,例如format='%m/%d/%Y %H:%M'
。
df['Time'] = pd.to_datetime(df[['Time']]) # Convert 'Time' column to datetime, possibly using format keyword
df.set_index(df.Time, inplace=True) # set result as index
答案 1 :(得分:1)
我认为您可以尝试to_datetime
和set_index
:
print df
Time TemperatureF DewpointF
0 1/1/2015 0:01 31.7 27.1
1 1/1/2015 0:06 31.7 27.4
2 1/1/2015 0:11 31.6 27.3
3 1/1/2015 0:16 31.6 27.3
4 1/1/2015 0:21 31.5 26.9
5 1/1/2015 0:26 31.5 26.9
6 1/1/2015 0:31 31.5 26.9
#check column names
print df.columns
Index([u'Time', u'TemperatureF', u'DewpointF'], dtype='object')
#first number is month
df['Time'] = pd.to_datetime(df['Time'], format='%m/%d/%Y %H:%M') #no double []
df.set_index('Time', inplace=True)
print df
TemperatureF DewpointF
Time
2015-01-01 00:01:00 31.7 27.1
2015-01-01 00:06:00 31.7 27.4
2015-01-01 00:11:00 31.6 27.3
2015-01-01 00:16:00 31.6 27.3
2015-01-01 00:21:00 31.5 26.9
2015-01-01 00:26:00 31.5 26.9
2015-01-01 00:31:00 31.5 26.9
print df.index
DatetimeIndex(['2015-01-01 00:01:00', '2015-01-01 00:06:00',
'2015-01-01 00:11:00', '2015-01-01 00:16:00',
'2015-01-01 00:21:00', '2015-01-01 00:26:00',
'2015-01-01 00:31:00'],
dtype='datetime64[ns]', name=u'Time', freq=None)
如果仍为ValueError
,请尝试添加参数errors='coerce'
,以便将不匹配格式的字符串转换为NaT
:
df['Time'] = pd.to_datetime(df['Time'], format='%d/%m/%Y %H:%M', errors='coerce')
答案 2 :(得分:1)
df.set_index(pd.DatetimeIndex(pd.to_datetime(df.Time)), inplace=True)