Панды: Могу ли я использовать метод round () в режиме столбца? - PullRequest
0 голосов
/ 04 ноября 2019

Я пытаюсь отформатировать выходные данные года, который сохраняется как число с плавающей запятой, округлить до 0 десятичных знаков и удалить информацию о кадре данных.

# Display earliest, most recent, and most common year of birth
print('Earliest year of birth:')
min_yob = df.birth_year.min()
print(round(min_yob))

print('Max year of birth: ')
max_yob = df.birth_year.max()
print(round(max_yob))

print('Most common year of birth: ')
mod_yob = df.birth_year.mode()
print(round(mod_yob))

Вывод, который я получаю для этого, выглядит следующим образом:

Earliest year of birth:
1899
Max year of birth: 
2016
Most common year of birth: 
0    1989.0
dtype: float64

Если я преобразую mod_yob в int, он будет отображаться правильно, но я не уверен, почему round() не работает здесь.

 Most common year of birth: 
 1989

Возможно, я поступаю неправильно.

1 Ответ

0 голосов
/ 04 ноября 2019

Если единственное значение в Series имеет тип float (что, как он показывает, имеет место в вашем сценарии), то функция mode выведет значения с плавающей запятой. Лучше всего убедиться, что все серии значений имеют целочисленные значения до факта.

df["birth_year"] = df["birth_year"].astype(int)

Если у вас есть NaN, попробуйте следующее:

df["birth_year"] = df["birth_year"].astype(pd.Int64Dtype())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...