我想做的是附加到作为参数传递到函数的数据帧中,就像下面的代码中函数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,则没有任何效果。这有什么原因吗?在
编辑:
我想我写完问题后明白了原因。由于append
创建了一个新对象,如果没有返回新对象,则赋值
只将新的数据帧传递给引用的副本df
,即函数调用生成的副本,不传递给原始的df
。因此,新的数据帧丢失。在
似乎您忘了
return df
:或更好:
^{pr2}$我认为如果检查^{} 它返回新的}是必要的。在
object
,那么{相关问题 更多 >
编程相关推荐