Изменение фрейма данных pandas, который может быть представлением

У меня есть пандыDataFrame df, которые возвращаются из функции, и я обычно не знаю, является ли это независимым объектом или видом на другой DataFrame. Я хочу добавить к нему новые столбцы, но не хочу копировать его без необходимости.

df['new_column'] = 0

может дать неприятное предупреждение об изменении копии

df = df.copy()

может быть дорого, если df большой.
Как здесь лучше всего?

1 ответ

  1. вы должны использовать индексатор, чтобы создать свой s1 такой имеет:

    import pandas as pd
    s = pd.DataFrame({'a':[1,2], 'b':[2,3]})
    indexer = s[s.a > 1].index
    s1 = s.loc[indexer, :]
    s1['c'] = 0
    

    следует удалить предупреждение.