使用循环将单个数据帧存储在列表中 Python

Storing individual dataframes in a list using a loop Python

我需要将 10 个数据帧存储到一个列表中。数据帧是函数的输出。 问题是列表与最后一个数据框保持一致。例如,resultlist[0] 假设是 01-Feb-2020 的数据框。但是列表中的每个数据框都是 10-Feb-2020 的输出。

resultList = [None]*10

for i in range(0,10):    
    resultList[i]= getResultfunction(id,listDates[i])

据我所知,您提供的代码片段是正确的。只需知道您为每个 getResultfunction 调用提供了相同的 id 参数。 你能展示 getResult 函数的实现吗?问题可能在那里。那个或你的 listDates 列表包含错误的日期。

编辑 1 好吧,问题可能是您只是在列表中存储对同一数据框的引用。如果您不熟悉编程语言如何存储引用和值,我建议您查看此 link https://blog.penjee.com/passing-by-value-vs-by-reference-java-graphical/ 或只是 google 它,因为它是编程语言的基本范例.

所以基本上,每次调用 getResultfunction 时,您都会获得对同一模板的引用,然后更改此模板,然后 return 会引用该模板。下次调用该函数时,您将访问相同的(更改后的)模板,再次更改它,然后 return 对其进行新引用。然后该列表存储大量对 相同对象!

的引用

在这种特殊情况下,每次调用 getResultfunction 都应该创建一个新对象。我看到 2 个解决方案;每次调用 getResultfunction 时:

  • 只需复制现有模板,生成一个新的相同对象:
def getResultfunction(id, date):
    p = template.copy()
    """other computations"""
    return p
  • 从头开始创建新模板:
def getResultfunction(id, date):
    data = {...}
    df = pd.Dataframe(data)
    """"other computations"""
    return df