У меня есть dataframe, который выглядит следующим образом:счетные поля даты в панд
from StringIO import StringIO
myst="""Uptime: 905034 Threads: 5 Questions: 1215 Slow queries: 3 Opens: 190 Flush tables: 1 Open tables: 4 Queries per second avg: 0.001
Uptime: 905094 Threads: 5 Questions: 1216 Slow queries: 3 Opens: 190 Flush tables: 1 Open tables: 4 Queries per second avg: 0.001
Uptime: 905154 Threads: 5 Questions: 1217 Slow queries: 3 Opens: 190 Flush tables: 1 Open tables: 4 Queries per second avg: 0.001
"""
u_cols=[]
for i in range(29):
u_cols.append('column'+str(i))
myf = StringIO(myst)
import pandas as pd
df = pd.read_csv(StringIO(myst), sep=' ', names = u_cols)
То, что я пробовал:
df['IST_DATE']=df['column1'].apply((lambda x: dt.datetime.today() - dt.timedelta(seconds=60)))
In [127]: df[['column1','IST_DATE']]
Out[127]:
column1 IST_DATE
0 905034 2015-03-06 15:55:55.993769
1 905094 2015-03-06 15:55:55.993791
2 905154 2015-03-06 15:55:55.993803
Ожидаемый результат должен иметь разницу в 1 минуту в строке. Напр.
Out[127]:
column1 IST_DATE
0 905034 2015-03-06 15:53:55.993769
1 905094 2015-03-06 15:54:55.993791
2 905154 2015-03-06 15:55:55.993803
Время работы рассчитывается каждую минуту. Последняя строка в кадре данных показывает прошедшие секунды. Так, например, 905154 означает, что сервер был запущен 24 февраля
>>> dt.datetime.today() - dt.timedelta(seconds=905154)
datetime.datetime(2015, 2, 24, 4, 40, 16, 28786)
Другими словами, «столбец1», которое представляет секунды от начала времени (24 февраля в этом случае) должны быть преобразованы в читаемых даты.
обновление:
Как найти последнее значение column1? мне нужно использовать это значение (например, для 905154), как это ....
df['IST_DATE']=df['column1'].apply((lambda x: dt.datetime.today() - pd.Timedelta(905154,unit='s') + pd.Timedelta(x,unit='s')))
df[['column1','IST_DATE']]
обновление 1
Я пытался что-то вроде этого, но это не сработало:
myval=df.tail(1)['column1']
df['IST_DATE']=df['column1'].apply((lambda x: dt.datetime.today() - pd.Timedelta(str(myval),unit='s') + pd.Timedelta(x,unit='s')))