我想将数据框中的某些列转换为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'))
关于如何在一行中转换数据框中的指定列的任何想法?
答案 0 :(得分:1)
使用.apply
对我有用。您错误地将列作为args。
newdf[['days 1','days 2', 'days 3']] = newdf[['days 1','days 2','days 3']].apply(pd.to_timedelta,unit = 'D')