我试图在for循环中创建一个数据帧列表,然后将它们连接到for循环之外并写入excel。我已经使代码接近,但是由于某种原因,在for循环中创建的列最终成为最终值,而不是循环通过时的每个单独值。我相信这是非常简单的,我只是错过了一些简单的事情,但今晚似乎无法解决。下面是一些虚拟代码来说明和帮助解决问题。最后,我想要一个带有wks 1-9的excel输出。但是,在我的实际输出中,wk列中的所有值都等于9
import pandas as pd
sample = []
area = pd.Series({'California':423967, 'Texas':695662})
pop = pd.Series({'California':38332521, 'Texas':26448193})
data = pd.DataFrame({'area':area, 'pop':pop})
print(data)
for i in range(10):
data['wk'] = i
sample.append(data)
print(data)
res = pd.concat(sample)
res.to_excel("Concatenating DataFrames.xlsx", index=False)
在一个循环中生成多个数据帧并将它们连接起来是非常低效的。最好在列表或字典上进行迭代,然后在循环后创建一个数据帧。下面,我已将您的系列文章转换回字典。请注意,在循环的每次迭代中都必须复制字典,以便循环不会不断改变原始字典
这里的问题在于,当您将数据附加到列表中时,它不会为它创建单独的内存,而是它们都引用相同的内存,这就是为什么在循环中最后一次更新后,它会变成9或最终值
替换
与
.copy()将为循环中的每个df创建新内存
相关问题 更多 >
编程相关推荐