我正在尝试将数据帧列转换为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,那会是什么方法?
答案 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中的更多示例。