Python:Pandas数据帧 - 覆盖数据而不是多数

时间:2017-03-01 14:00:42

标签: python pandas dataframe

我想从几个.csv文件中提取数据并将它们合并到pandas中的一个大数据帧中。为此,我创建了一个应填充输入数据帧数据的数据帧。

final_df = DataFrame(columns=['Column1','Column2','Column3'])

for file in glob.glob("file.csv"):
     name_csv = str(file)
     logfile = pd.read_csv(name_csv, skip_blank_lines = False)
     df = DataFrame(logFile, columns=['Column1','Column2','Column3']
     concat = pd.concat([final_df,df])

但是,通过循环的每次迭代,都会覆盖先前提取的数据。我该如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

您根本没有使用pd.concat的结果。变量concat在每次迭代中都被抛弃,但它将是部分数据框。

答案 1 :(得分:1)

首先需要append所有dflist,然后使用concat

read_csv - logfile的一些改进已经是df,更好的是使用参数names

dfs = []
for file in glob.glob("*.csv"):
     logfile = pd.read_csv(str(file), 
                           skip_blank_lines = False, 
                           names = ['Column1','Column2','Column3'])
     dfs.append(logfile)

concat = pd.concat(dfs)

或使用list comprehension

dfs = [pd.read_csv(str(file), 
       skip_blank_lines = False, 
       names = ['Column1','Column2','Column3']) for file in glob.glob("*.csv")]

concat = pd.concat(dfs)

答案 2 :(得分:1)

您应该创建df列表并在结尾处连接所有内容:

SB_IO