Я работаю над большим файлом CSV почти только со строками. Я хочу провести статистический тест, например определить кластеры, но для этого мне нужно преобразовать мою строку как int. (Я также совершенно новичок в python, pandas, scikitlearn).
так вот мой код:
#replace str as int
df.WORK_TYPE[df.WORK_TYPE == 'aaa']=1
df.WORK_TYPE[df.WORK_TYPE == 'bbb']=2
df.WORK_TYPE[df.WORK_TYPE == 'ccc']=3
df.WORK_TYPE[df.WORK_TYPE == 'ddd']=4
print(df)
И вот мое сообщение об ошибке:
C:\Users\ishemf64\AppData\Local\Continuum\anaconda3\lib\site-packages\ipykernel_launcher.py:1: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame
See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
"""Entry point for launching an IPython kernel.
C:\Users\ishemf64\AppData\Local\Continuum\anaconda3\lib\site-packages\ipykernel_launcher.py:2: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame
See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
C:\Users\ishemf64\AppData\Local\Continuum\anaconda3\lib\site-packages\ipykernel_launcher.py:3: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame
See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
This is separate from the ipykernel package so we can avoid doing imports until
C:\Users\ishemf64\AppData\Local\Continuum\anaconda3\lib\site-packages\ipykernel_launcher.py:4: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame
See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
after removing the cwd from sys.path.
Я не понимаю, почему у меня эта ошибка, а также не могли бы вы сказать мне, есть ли другой способ и / или обязательный преобразование текста, если я хочу провести свой анализ.






Это похоже на предупреждение, а не на ошибку. Люди лучше, чем я объяснил здесь: https://www.dataquest.io/blog/settingwithcopywarning/
Поскольку у вас, кажется, всего несколько категорий, не могли бы вы использовать get_dummies? Он берет ваш pd.Series с категориальными данными и помогает вам преобразовать их в фиктивные переменные (1, если есть, 0, если нет). Посмотрите здесь: https://pandas.pydata.org/pandas-docs/stable/generated/pandas.get_dummies.html
Как описано в дубликате:
df.loc[df['WORK_TYPE'] == 'aaa', 'WORK_TYPE']=1