【发布时间】:2016-12-14 11:28:36
【问题描述】:
根据我对python的理解,对数据的可变引用可以在一个函数范围内进行修改,并在外部反映变化。然而,下面的行为让我感到困惑:
1) 考虑一个列表:
my_list = []
def checklistappend( list ):
list.append( 1 )
checklistappend( my_list )
print ( my_list )
正如预期的那样,变量 my_list = [1]
2) 但是考虑以下使用数据框的场景:
my_df = pd.DataFrame(columns=['A'])
def checkdfappend ( df ):
df.append( [1] )
checkdfappend( my_df )
print( my_df )
在这种情况下,my_df 的结果仍然是一个空数据框,其中包含“A”列,这是不直观的,我能想到的唯一解释是数据框 append 方法在内部分配给一个新变量,即我没想到的行为。
我将 python 2.7.2 与 pandas 0.13.1 一起使用,更改其中任何一个都不在我的控制范围内。
有没有其他方法可以在不复制那么多副本的情况下实现相同的目标?
【问题讨论】:
-
也许是个愚蠢的问题,但你试过没有这个功能吗?我的意思是申请 my_df 直接
-
append 不是就地操作。它返回一个新的数据框。所以你实际上并没有修改对象。
标签: python pandas pass-by-reference