поиск виновника настройки withcopywarning
при попытке изменить dataframe с использованием .loc [row_indexer, col_indexer] = значение сохраняется. Эта проблема связана с доступом к срезам DataFrame из другого DataFrame без вызывы метода .copy ().
пошаговая ошибка воспроизведения
рассмотрим следующий код:
import pandas as pd d = {'col1': [1, 2, 3, 4], 'col2': [3, 4, 5, 6]} df = pd.DataFrame(data=d) df['new_column'] = None df.loc[0, 'new_column'] = 100
Первоначально, нет никаких предупреждений. Однако создание нового DataFrame на основе подмножества DF:
new_df = df.loc[df.col1 > 2]
, а затем попытка изменить новый фарм с использованием .loc:
new_df.loc[2, 'new_column'] = 100
triggers предупреждение.
] Решение: Использование .copy () для кадров данных, полученных из subset
, чтобы решить эту проблему, всегда используйте метод .copy () при создании Новый диаграмма данных, основанный на подмножестве существующего данных DataFrame. 2] .copy () new_df_copy.loc [2, 'new_column'] = 100
new_df_copy = df.loc[df.col1 > 2].copy() new_df_copy.loc[2, 'new_column'] = 100]
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3