我一直在尝试用浮点格式的秒数来更改pandas列的日期来确定日期。但是,我无法使其工作。
到目前为止我的尝试:
onFormReady: function($form) {
$('input[name="website"]').val(window.location.href).change();
}
我暂时找不到字符串格式。如何解决问题。 感谢您的帮助。
默认情况下,熊猫给出的日期是1970年1月1日,如何将其设置为2013年9月1日?
我也尝试过
import numpy as np
import pandas as pd
df = pd.DataFrame({'time': [1.0,2.0,3.0,60.0,120.1,120.2]})
df['date'] = '2013-09-01 00:00:' + df['time'].astype(str)
df['date2'] = pd.to_datetime(df['date'],format='%Y-%m-%d %H:%M%-S') # this fails
df
仍然没有运气。
答案 0 :(得分:2)
使用直接to_timedelta
添加to_datetime
pd.to_datetime('2013-09-01') + pd.to_timedelta(df.time, unit='s')
Out[19]:
0 2013-09-01 00:00:01.000
1 2013-09-01 00:00:02.000
2 2013-09-01 00:00:03.000
3 2013-09-01 00:01:00.000
4 2013-09-01 00:02:00.100
5 2013-09-01 00:02:00.200
Name: time, dtype: datetime64[ns]
答案 1 :(得分:1)
给出数据,您应该首先创建一个date
列,并将其解析为默认日期时间,然后找到增量。
您可以将Python的datetime
库用于此工作:
import numpy as np
import pandas as pd
from datetime import datetime, timedelta
df = pd.DataFrame({'time': [1.0,2.0,3.0,60.0,120.1,120.2]})
df['date'] = datetime.strptime('2013-09-01 00:00:00', '%Y-%m-%d %H:%M:%S')
df['date2'] = df.apply(lambda row: row.date - timedelta(seconds=row.time), axis=1)
希望有帮助。
答案 2 :(得分:1)
您可以为此使用熊猫Timedelta:
import numpy as np
import pandas as pd
df = pd.DataFrame({'time': [1.0,2.0,3.0,60.0,120.1,120.2]})
df['date'] = pd.to_datetime('2013-09-01') + pd.Series([pd.Timedelta(t, unit='s') for t in df['time']])
print(df)
输出:
time date
0 1.0 2013-09-01 00:00:01.000
1 2.0 2013-09-01 00:00:02.000
2 3.0 2013-09-01 00:00:03.000
3 60.0 2013-09-01 00:01:00.000
4 120.1 2013-09-01 00:02:00.100
5 120.2 2013-09-01 00:02:00.200
有关更多参考,请访问:https://pandas.pydata.org/pandas-docs/stable/user_guide/timedeltas.html