pd.Timedelta在数据帧列上的转换

时间:2016-08-15 18:08:49

标签: python pandas

我正在尝试将数据帧列转换为timedelta但是遇到了问题。该列的格式类似于“+ XX:XX:XX”或“-XX:XX:XX”

我的数据框:

    df = pd.DataFrame({'time':['+06:00:00', '-04:00:00'],})

我的方法:

    df['time'] = pd.Timedelta(df['time'])

然而,我收到错误:

    ValueError: Value must be Timedelta, string, integer, float, timedelta or convertible

当我做一个更简单的例子时:

    time = pd.Timedelta('+06:00:00')

我得到了我想要的输出:

    Timedelta('0 days 06:00:00')

如果我想将一个系列转换为具有所需输出的timedelta,那会是什么方法?

1 个答案:

答案 0 :(得分:3)

错误很明显:

  

ValueError:值必须是Timedelta,string,integer,float,timedelta   或可转换的

您传递给>>> type(df['time']) <class 'pandas.core.series.Series'> 的内容与上述数据类型无关:

>>> [pd.Timedelta(x) for x in df['time']]
[Timedelta('0 days 06:00:00'), Timedelta('-1 days +20:00:00')]

可能你想要它:

>>> df['time'].apply(pd.Timedelta)
0            06:00:00
1   -1 days +20:00:00
Name: time, dtype: timedelta64[ns]

或者:

index.html

查看docs中的更多示例。