【发布时间】:2016-07-02 23:31:02
【问题描述】:
我正在尝试将文件列表读入 Python 中的 Pandas DataFrames 列表。但是,下面的代码不起作用。
files = [file1, file2, file3]
df1 = pd.DataFrame()
df2 = pd.DataFrame()
df3 = pd.DataFrame()
dfs = [df1, df2, df3]
# Read in data files
for file,df in zip(files, dfs):
if file_exists(file):
with open(file, 'rb') as in_file:
df = pd.read_csv(in_file, low_memory=False)
print df #the file is getting read properly
print df1 #empty
print df2 #empty
print df3 #empty
如果我将原始 DataFrames 作为 DataFrames 列表传递到 for 循环中,如何更新它们?
【问题讨论】:
-
您将这些文件读入三个 DF 或将它们合并为一个 DF 的目标是什么?
-
您正在更新可迭代对象,而不是元素是什么,如果您迭代列表,这将是同样的事情。您是否有理由需要预先构建空的 dfs 而不是仅设置
dfs=[]然后遍历文件并执行dfs.append(pd.read_csv(in_file)? -
当你遍历一个列表时,你不能直接修改元素。
df = pd.read_csv(in_file, low_memory=False)行实际上并没有修改列表中的元素,它正在修改元素的副本。编辑:击败我@EdChum :) -
请参阅stackoverflow.com/questions/1207406/… 以获得解释,但基本上您可以跳过此步骤,只需将其附加到您创建的 dfs 列表中
-
@MaxU:我试图将文件读入三个不同的 DF。这个想法是,通过使用循环,可以简洁地导入任意数量的文件。
标签: python list pandas dataframe