В Pandas при выборе части фрейма данных обычной практикой является использование метода '.copy() ' метод для создания копии исходного фрейма данных. Такой подход гарантирует, что любые изменения, внесенные в подмножество, не повлияют на родительский фрейм данных.
Зачем делать копию?
По умолчанию индексирование фрейма данных возвращает просмотр исходного фрейма данных, а не копии. Это означает, что любые изменения, внесенные в подмножество, будут напрямую влиять на родительский фрейм данных. Чтобы сохранить целостность родительского фрейма данных, важно создать копию с помощью метода '.copy()'.
Последствия отказа от копирования
Учитывайте следующий фрагмент кода:
df = pd.DataFrame({'x': [1, 2]}) df_sub = df.iloc[0:1] df_sub.x = -1
В этом примере df_sub — это представление df. В результате установка df_sub.x в значение -1 также изменяет df.x:
print(df) x 0 -1 1 2
Преимущества копирования
Копирование фреймов данных гарантирует, что родительский фрейм данных останется нетронутым. Это особенно важно, когда с фреймом данных выполняется несколько операций и крайне важно сохранить исходные данные для последующего анализа или сравнения.
df_sub_copy = df.iloc[0:1].copy() df_sub_copy.x = -1 print(df) x 0 1 1 2
В этом измененном фрагменте кода df_sub_copy является копией df. В результате изменение df_sub_copy.x не влияет на df.
Примечание: Важно отметить, что поведение индексации фреймов данных изменилось в новых версиях Pandas. В Pandas 1.0 и более ранних версиях индексация фрейма данных по умолчанию возвращает копию. Однако в Pandas 1.1 и более поздних версиях индексация возвращает представление. Чтобы обеспечить единообразное поведение в разных версиях, рекомендуется всегда использовать метод «.copy()» при создании подмножеств фреймов данных.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3