Мне нужно обработать огромное количество CSV файлов, где метка времени всегда является строкой, представляющей временную метку unix в миллисекундах. Я не смог найти способ, чтобы эффективно редактировать эти столбцы.
Это то, что я придумал, однако это, конечно, дублирует только столбец, и мне нужно как-то вернуть его в исходный набор данных. Я уверен, что это можно сделать при создании DataFrame
?
import sys
if sys.version_info[0] < 3:
from StringIO import StringIO
else:
from io import StringIO
import pandas as pd
data = 'RUN,UNIXTIME,VALUE\n1,1447160702320,10\n2,1447160702364,20\n3,1447160722364,42'
df = pd.read_csv(StringIO(data))
convert = lambda x: datetime.datetime.fromtimestamp(x / 1e3)
converted_df = df['UNIXTIME'].apply(convert)
Это выберет столбец "UNIXTIME" и изменит его из
0 1447160702320
1 1447160702364
2 1447160722364
Name: UNIXTIME, dtype: int64
в этот
0 2015-11-10 14:05:02.320
1 2015-11-10 14:05:02.364
2 2015-11-10 14:05:22.364
Name: UNIXTIME, dtype: datetime64[ns]
Однако, я хотел бы использовать что-то вроде pd.apply()
, чтобы получить весь набор данных, возвращенный с преобразованным столбцом, или, как я уже писал, просто создавайте datetime при создании DataFrame из CSV.