我想要做的是附加到一个 DataFrame,该 DataFrame 作为参数传递给函数,类似于以下代码中按函数完成的操作f
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 会丢失。