我想实现一个函数,允许其参数的值"就地"重新分配.
例如,一个函数将增加参数x并减少参数y.(这只是一个简单的例子 - 动机是X和Y实际上是大型数据帧的单个元素;它们的表达式很笨拙;而且这个操作将经历多次迭代.)
def incdec(x,y,d):
x += d
y -= d
Run Code Online (Sandbox Code Playgroud)
理想情况下,这将运行为:
X = 5; Y = 7; d = 2
incdec(X,Y,d)
Run Code Online (Sandbox Code Playgroud)
发现这些值现在是X = 7和Y = 5.但当然它不会那样 - 我想知道为什么?
可能是一个微不足道的问题,但我需要了解这里发生了什么(以及如何解决它).
假设我有一个包含列'a'和'b'的数据框,如下所示:
f = pandas.DataFrame({'a':[1,2,3,4,5], 'b':[10,20,30,40,50]})
Run Code Online (Sandbox Code Playgroud)
现在对于3个或更少的'a'的每个元素,我想将'b'的相应元素除以10.
f[f['a']<=3]['b'] = (f[f['a']<=3]['b'])/10
Run Code Online (Sandbox Code Playgroud)
因此,'b'列中的值现在应为[1,2,3,40,50].
但我发现'b'栏保持不变!是什么赋予了?