如何更改熊猫日期时间列中的日期?

时间:2019-10-06 23:22:56

标签: python pandas dataframe

我一直在尝试用浮点格式的秒数来更改pandas列的日期来确定日期。但是,我无法使其工作。

到目前为止我的尝试:

  onFormReady: function($form) {
    $('input[name="website"]').val(window.location.href).change();
  }

参考:http://strftime.org/

我暂时找不到字符串格式。如何解决问题。 感谢您的帮助。

问题

默认情况下,熊猫给出的日期是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

仍然没有运气。

3 个答案:

答案 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