Что я хочу сделать, так это добавить в DataFrame, который передается в качестве параметра в функцию вида того, что делается в следующем коде по функции f
Pandas: Невозможно добавить и переназначить в DataFrame внутри функции
df = pd.DataFrame(data=[(0,1), (0,1)], columns=['a', 'b'])
df
Out[58]:
a b
0 0 1
1 0 1
def f(df):
df['a'] = 1 # The first column will be modified
# However the following will have no effect
df = df.append(pd.DataFrame(data=[(0, 1)], columns=['a', 'b']))
f(df)
df
# As we see `append` didn't have an effect on the df
Out[61]:
a b
0 1 1
1 1 1
Как видно из приведенного выше кода, append
не действует, если DataFrame не возвращается. Есть ли причина, почему это происходит?
Edit:
Я думаю, что я понял причину после того, как я написал этот вопрос. Поскольку append
создает новый объект, если новый объект не будет возвращен, то задание
df = df.append(pd.DataFrame(data=[(0, 1)], columns=['a', 'b']))
будет только пройти новый DataFrame на копию ссылки на df
, копия, которая генерируется при вызове функции, и не оригинальным df
. Таким образом, новый DataFrame теряется.
append не работает на месте. Он создает новый Dataframe. Если вы не будете использовать возвращенный объект, вы останетесь с тем же Dataframe. – AndreyF