Если вы получаете все 00:00:00.000000
значения, тогда ваши air_time
значения могут быть строками. (Вы можете проверить тип данных столбца air_time
, проверив data.info()
. Если dtype сообщает object
, тогда значения являются объектами Python (такими как str
s) вместо целочисленного типа данных NumPy. Вы можете затем подтвердите, что они являются строками, проверив set(map(type, data['air_time']))
.)
Если они являются строками, вы можете сначала преобразовать их в целые, используя:
data['air_time'] = data['air_time'].astype(int)
Если 137 означает 137 минут, используйте
data['air_time'] = pd.to_timedelta(data['air_time'], unit='m', errors='coerce')
Если, с другой стороны, 137 означает 1 час и 37 минут, тогда используйте
data['air_time'] = pd.to_timedelta(
(data['air_time']//100)*60 + (data['air_time'] % 100), unit='m',
errors='coerce')
Аргумент unit='m'
указывает pd.to_timedelta
интерпретировать значения как минуты.
Например,
import pandas as pd
data = pd.DataFrame({'air_time':['137','137','126','92','352']})
data['air_time'] = data['air_time'].astype(int)
data['air_time'] = pd.to_timedelta(data['air_time'], unit='m', errors='coerce')
выходы
air_time
0 02:17:00
1 02:17:00
2 02:06:00
3 01:32:00
4 05:52:00
Обратите внимание, что pd.to_timedelta
также может принимать строки в качестве входных данных , если строки содержат требуемые единицы . Например,
import pandas as pd
data = pd.DataFrame({'air_time':['137','137','126','92','352']})
data['air_time'] = data['air_time'] + ' minutes'
# air_time
# 0 137 minutes
# 1 137 minutes
# 2 126 minutes
# 3 92 minutes
# 4 352 minutes
data['air_time'] = pd.to_timedelta(data['air_time'], errors='coerce')
дает тот же результат.