我想从几个.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])
但是,通过循环的每次迭代,都会覆盖先前提取的数据。我该如何解决这个问题?
答案 0 :(得分:2)
您根本没有使用pd.concat
的结果。变量concat
在每次迭代中都被抛弃,但它将是部分数据框。
答案 1 :(得分:1)
首先需要append
所有df
至list
,然后使用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