【发布时间】:2016-05-31 07:55:45
【问题描述】:
我有一个超出本地方法范围的数据框。我想做如下:
def outer_method():
... do outer scope stuff here
df = pd.DataFrame(columns=['A','B','C','D'])
def recursive_method(arg):
... do local stuff here
# func returns a data frame to be appended to empty data frame
results_df = func(args)
df.append(results_df, ignore_index=True)
return results
recursive_method(arg)
return df
但是,这不起作用。如果我以这种方式附加到 df ,则它始终为空。
我在这里找到了我的问题的答案:appending-to-an-empty-data-frame-in-pandas... 如果空的 DataFrame 对象在方法的范围内,这可行,但不适用于我的情况。根据@DSM 的评论“但附加不会就地发生,因此如果需要,您必须存储输出:”
IOW,我需要类似的东西:
df = df.append(results_df, ignore_index=True)
在我的本地方法中,但这并不能帮助我访问我的外部范围变量 df 以附加到它。
有没有办法做到这一点?这适用于扩展列表对象内容的 python extend 方法(我意识到 DataFrames 不是列表,但是......)。是否有类似的方法可以使用 DataFrame 对象来执行此操作,而无需处理我的 df 范围问题?
顺便说一句,Pandas concat 方法也可以,但我遇到了变量范围的问题。
【问题讨论】:
-
抱歉,您是说
df = df.append(df_join_out, ignore_index=True)不起作用? -
然后将右侧的
df作为未解析的引用给出。
标签: python pandas scope append dataframe