【问题标题】:dataframe append not visible out of function scope数据框追加在函数范围之外不可见
【发布时间】: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


【解决方案1】:

您需要将输出分配回df

df = df.append([1])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-09
    • 1970-01-01
    • 1970-01-01
    • 2014-11-09
    相关资源
    最近更新 更多