Предположим, это мой df
, а dtypes int64
в начале.
A B C
0 1 2 3
1 5 6 7
2 8 9 10
3 13 14 15
Затем я попытался преобразовать все значения в astype str
, используя
df = df.astype(str)
df.dtypes
A int64
B int64
C int64
dtype: object
Теперь он изменил dtypes на object
, как я и ожидал. Теперь я попытался снова преобразовать несколько столбцов в dtype int64
, используя pd.to_numeric
с apply
function
df.iloc[:, 0:2] = df.iloc[:, 0:2].apply(pd.to_numeric, errors='coerce')
print(df.dtypes)
A object
B object
C object
dtype: object
Этот код был выполнен, но он не изменил dtypes col A and B
на int64
. Они все еще dtype object
. Я не могу понять, почему это не сработало.
Я даже попробовал тот же код с loc
вместо iloc
, но он все еще не работает, dtypes все еще object
df.loc[:, ['A','B']] = df.loc[:, ['A','B']].apply(pd.to_numeric, errors='coerce')
Но когда я использую только df[[cols]]
, это работает.
df[['A','B']] = df[['A','B']].apply(pd.to_numeric, errors='coerce') # This works
Примечание: я искал, но не смог найти ничего, связанного с моим вопросом. Если это дублирующий вопрос, пожалуйста, укажите мне на него.