在熊猫数据框中将浮点值转换为timedelta值

时间:2020-04-22 05:59:11

标签: python pandas datetime

我想将数据框中的某些列转换为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]})

我尝试使用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') 

但是,当我这样分隔每一列时,代码工作正常。

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')

我也尝试使用.apply()函数,但没有运气

newdf[['days 1','days 2','days 3']] = newdf.apply(pd.to_timedelta(arg = ['days 1','days 2','days 3'],unit = 'D'))

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

1 个答案:

答案 0 :(得分:1)

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

newdf[['days 1','days 2', 'days 3']] = newdf[['days 1','days 2','days 3']].apply(pd.to_timedelta,unit = 'D')