将 pandas 数据框中的浮点值转换为 timedelta 值

ima*_*tha 4 python datetime pandas

我想将数据框中的某些列转换为 timedelta 值。在此示例中,列“第 1 天”、“第 2 天”、“第 3 天”需要从浮点值转换为时间增量值(以天为单位)。

#trail dataframe
newdf = pd.DataFrame({'days 1' : [14.3], 'val 1' : [147], 'days 2' : [16.7],'val 2' : [148], 'days 3' : [17.7],'val 3' : [149]})
Run Code Online (Sandbox Code Playgroud)

我尝试使用该pd.to_timedelta()函数进行转换,但出现错误arg must be a string, timedelta, list, tuple, 1-d array, or Series

newdf[['days 1','days 2', 'days 3']] = pd.to_timedelta(newdf[['days 1','days 2','days 3']],unit = 'D') 
Run Code Online (Sandbox Code Playgroud)

然而,当我这样分隔每一列时,代码运行良好。

newdf['days 1'] = pd.to_timedelta(newdf['days 1'],unit = 'D')
newdf['days 2'] = pd.to_timedelta(newdf['days 2'],unit = 'D')
newdf['days 3'] = pd.to_timedelta(newdf['days 3'],unit = 'D')
Run Code Online (Sandbox Code Playgroud)

我也尝试使用这些.apply()功能但没有运气

newdf[['days 1','days 2','days 3']] = newdf.apply(pd.to_timedelta(arg = ['days 1','days 2','days 3'],unit = 'D'))
Run Code Online (Sandbox Code Playgroud)

关于如何在一行中转换数据框中的指定列有什么想法吗?

Dav*_*son 5

使用.apply对我有用。您错误地将列作为参数。

newdf[['days 1','days 2', 'days 3']] = newdf[['days 1','days 2','days 3']].apply(pd.to_timedelta,unit = 'D')
Run Code Online (Sandbox Code Playgroud)