Сопоставление столбца внутри фрейма данных с новым типом с помощью Pandas 2.2.3+Python

Программы на Python
Ответить
Anonymous
 Сопоставление столбца внутри фрейма данных с новым типом с помощью Pandas 2.2.3+

Сообщение Anonymous »

Я привык делать такие вещи, как:

Код: Выделить всё

import pandas as pd
df = pd.DataFrame( pd.Categorical(['a','b','b'],['a','b']),columns=['x'])
df.loc[:,'x'] = df['x'].replace({'a':1, 'b':2})
Однако в более новых версиях панд выдается предупреждение:

Код: Выделить всё

/tmp/ipykernel_1721527/1018712932.py:4: FutureWarning: Setting an item of incompatible dtype is deprecated and will raise in a future error of pandas. Value '[1, 2, 2]
Categories (2, object): [1, 2]' has dtype incompatible with category, please explicitly cast to a compatible dtype first.
df.loc[:,'x'] = df['x'].replace({'a':1, 'b':2})
Самый короткий обходной путь, который я могу придумать:

Код: Выделить всё

ncol = df['x'].replace({'a':1, 'b':2}).astype('float')
df['x'] = None
df = df.astype({'x':'float'})
df.loc[:,'x'] = ncol
Но это кажется слишком длинным и неизящным для якобы очень простой операции. Я упускаю что-то очевидное?

Подробнее здесь: https://stackoverflow.com/questions/791 ... ndas-2-2-3
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»