Преобразовать столбец данных pandas строки времени UTC в число с плавающей точкой - PullRequest
0 голосов
/ 30 июня 2018

У меня есть pandas dataframe со столбцом строк, с датами и временем в формате UTC, но мне нужно преобразовать их в числа с плавающей точкой. У меня проблемы с этим. Вот вид моей колонки:

df['time'][0:3]

0    2018-04-18T19:00:00.000000000Z
1    2018-04-18T19:15:00.000000000Z
2    2018-04-18T19:30:00.000000000Z
Name: time, dtype: object

Я пробовал это, но у меня не работает:

import datetime
for i in range(1,len(df)):
        df['time'][i] = datetime.datetime.strptime(df['time'][i], '%Y-%m-%dT%H:%M:%S.%f000Z')

Вот ошибка, которую я пытаюсь исправить:

execfile(filename, namespace)

exec(compile(f.read(), filename, 'exec'), namespace)

unsup.fit(np.reshape(df,(-1,df.shape[1])))

X = _check_X(X, self.n_components)

X = check_array(X, dtype=[np.float64, np.float32])

array = np.array(array, dtype=dtype, order=order, copy=copy)

ValueError: could not convert string to float: '2018-06-29T20:45:00.000000000Z'

Большое спасибо заранее.

1 Ответ

0 голосов
/ 30 июня 2018

Я думаю, вы можете использовать to_datetime с параметром format:

df['time1'] = pd.to_datetime(df['time'], format='%Y-%m-%dT%H:%M:%S.%f000Z')
print (df)
                             time               time1
0  2018-04-18T19:00:00.000000000Z 2018-04-18 19:00:00
1  2018-04-18T19:15:00.000000000Z 2018-04-18 19:15:00
2  2018-04-18T19:30:00.000000000Z 2018-04-18 19:30:00

Для присвоения назад:

df['time'] = pd.to_datetime(df['time'], format='%Y-%m-%dT%H:%M:%S.%f000Z')
print (df)
                 time
0 2018-04-18 19:00:00
1 2018-04-18 19:15:00
2 2018-04-18 19:30:00
...