#python #pandas
#python #pandas
Вопрос:
Хотя все значения в столбцах, которые я использую, являются числами, Python сообщает мне, что тип данных для каждого из них — «объект». Я не могу запускать для них функции статистики, если они не являются числами. Я пробовал
df['ColumnName'].astype(str).astype(int)
но я получаю следующую ошибку:
ValueError: invalid literal for int() with base 10: ''
Это то, что я получаю, когда запускаю df.dtypes:
0
StartDate object
EndDate object
Status object
IPAddress object
Progress object
Duration (in seconds) object
Finished object
RecordedDate object
ResponseId object
RecipientLastName object
RecipientFirstName object
RecipientEmail object
ExternalReference object
LocationLatitude object
LocationLongitude object
DistributionChannel object
UserLanguage object
TIMES TAUGHT object
LANGUAGE object
NONMEMBER object
ENGAGED object
BAPTIZED object
CONCERNS_1 object
PURPOSE_1 object
EXPERIENCE object
Title object
Mname object
Actor object
Q7 - Topics object
dtype: object
Как я могу изменить эти типы данных?
Комментарии:
1. вы могли бы написать это так: df[‘column_name].astype(int)
Ответ №1:
В вашем столбце есть пустые строки, которые нельзя преобразовать в int
значения
pd.to_numeric(df['ColumnName'])
будет работать, если значения являются допустимыми числами или пустыми строками. Ваш столбец будет type float
, потому что пустые строки будут преобразованы в nan
значения.
pd.to_numeric(df['ColumnName'], errors='coerce')
заменит каждое значение, которое не может быть преобразовано в число nan
.
Комментарии:
1. Я думаю, я понял это.
pd.to_numeric(df['colb']).astype("Int32")
кажется, работает; итак, комбинация ответов2. возможно, даже смогу сделать
df['ColumnName'].astype("Float32").astype("Int32")