Преобразование значений с плавающей запятой в значения timedelta в кадре данных pandas - PullRequest
1 голос
/ 22 апреля 2020

Я хочу преобразовать определенные столбцы в кадре данных в значения 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() функция, но go ошибка 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 Ответ

1 голос
/ 22 апреля 2020

Использование .apply сработало для меня. Вы неправильно ставите свои столбцы как аргументы.

newdf[['days 1','days 2', 'days 3']] = newdf[['days 1','days 2','days 3']].apply(pd.to_timedelta,unit = 'D')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...