Преобразование значения с плавающей запятой в целые числа в кадре данных Pandas, игнорируя нулевые значения

У меня есть два отдельных файла csv, которые я читаю в кадре данных pandas. Я уже сделал небольшую очистку и объединил таблицы по столбцу даты. У меня есть еще один столбец под названием «ExerciseTime», и я преобразовал импортированный формат времени времени дня, когда выполнялись упражнения, в формат с плавающей запятой, то есть с 22:30:00 (22:30) до 22,5 (значение с плавающей запятой).

Я хочу провести сплит-анализ тренировки/тестирования, сравнивая время тренировки в день с качеством сна (это мои данные о подключении Garmin и данные о цикле сна). В настоящее время очень мало точности/корреляции, но я подозреваю, что если я сделаю столбец «ExerciseTime» фиктивными переменными по часам, это может помочь. Я хочу преобразовать все значения в столбце в целые значения (округление вверх и вниз) и хочу игнорировать любые случаи, когда есть нули (дни, когда я не тренировался). В настоящее время я получаю сообщение об ошибке, когда использую следующую формулу:

JoinedTables = JoinedTables[JoinedTables.ExerciseTime.astype(int)]

Как лучше всего игнорировать нули и преобразовывать значения с плавающей запятой в целые числа?

Кроме того, если кто-нибудь знает о лучших предикторах моделей типов для использования с данными этого типа, я был бы признателен за любые идеи, поскольку я все еще новичок в этом. У меня есть другие точки данных, такие как «Общая продолжительность упражнений», «Употреблял ли я алкоголь перед сном», «Тип упражнений в тот день», «Фаза Луны в тот день», которые я хотел бы также включить и посмотреть, есть ли какие-либо статистические данные. значительное влияние на качество моего сна.


person Dom    schedule 02.10.2017    source источник


Ответы (1)


pd.to_numeric(col, errors='coerce') должен помочь:

JoinedTables['ExerciseTime'] = pd.to_numeric(JoinedTables['ExerciseTime'], errors='coerce')
person MaxU    schedule 02.10.2017
comment
MaxU, эта функция позволила мне успешно создать еще один столбец, в который были перенесены только те значения из ExerciseTime, которые имели значения, но вывод по-прежнему оставался в виде значений с плавающей запятой. Есть идеи, как это изменить? - person Dom; 02.10.2017
comment
@DomB, это будет float, если только все значения не могут быть преобразованы в целые числа. Если есть хотя бы одно значение, которое нельзя преобразовать в int, то это будет float. int dtype не может иметь NaN значений... - person MaxU; 02.10.2017