Python 为什么我的for循环要覆盖而不是追加?

Python 为什么我的for循环要覆盖而不是追加?,python,csv,pandas,append,hdfstore,Python,Csv,Pandas,Append,Hdfstore,我有多个(25k).csv文件,我正试图将它们附加到HDFStore文件中。它们都共享相同的标题。我正在使用下面的代码,但由于某种原因,每当我运行它时,数据帧并没有附加所有文件,而是只是列表中的最后一个文件 filenames = [] #list of .csv file paths that I've alredy populated dtypes= {dict of datatypes} store = pd.HDFStore('store.h5') store.put('df', pd

我有多个(25k).csv文件,我正试图将它们附加到HDFStore文件中。它们都共享相同的标题。我正在使用下面的代码,但由于某种原因,每当我运行它时,数据帧并没有附加所有文件,而是只是列表中的最后一个文件

filenames = []  #list of .csv file paths that I've alredy populated
dtypes= {dict of datatypes}
store = pd.HDFStore('store.h5')
store.put('df', pd.read_csv(filenames[0],dtype=dtypes,parse_dates=
["date"])) #store one data frame

for f in filenames:
    try:
        temp_csv = pd.DataFrame()
        temp_csv = pd.read_csv(f,dtype=dtypes,parse_dates=["trade_date"]) 
        store.append('df', temp_csv)
    except:
    pass

我尝试过使用文件名列表的子集,但总是得到最后一个条目。出于某种原因,循环不是附加我的文件,而是每次都覆盖它。任何建议都将不胜感激,因为这让我发疯。(python 3,windows)

我认为问题与:

store.append('df',temp\u csv)


如果我正确理解了您试图做的事情,“df”应该会更改每个迭代,您现在只是在覆盖它。

您在每个迭代中创建/存储一个新的数据帧,就像@SeaMonkey所说的那样。您的合并数据帧应该在循环之外实例化,类似这样

filenames = []  #list of .csv file paths that I've alredy populated
dtypes= {dict of datatypes}

df = pd.DataFrame()
for f in filenames:
    df_tmp = pd.read_csv(f,dtype=dtypes,parse_dates=["trade_date"]) 
    df = df.append(df_tmp)

store = pd.HDFStore('store.h5')
store.put('df', df)

如果不必使用
pandas
,可以使用普通的python
open
命令来完成。看看这个谢谢你的建议-我会试试看。我使用这种方法是因为csv文件每个都有大约100k行,其中有25k行。当我试图用一个数据帧而不是hdf文件来做这件事时,我的计算机不断崩溃,因为数据集太大了。除了:pass隐藏什么?当我尝试执行此操作时,我的存储将所有df作为单独的文件包含。根据文档,第一个参数是键,第二个参数应该是值。除非我看错了。我还使用了这里的“表格式”示例:。问题是,我不确定同一个键是否可以有两个值。我认为第一个被覆盖了