我正在尝试将3个文件附加在一起。log1包含5441行,log2包含1003行,log3包含2137行。当我运行这个程序时,它没有错误。但是,它只附加了一个日志,而不是全部3个。
据推测,追加后的总行数为8581行。但是,它只追加了5441行。
这就是我所做的:
paths = []
thisdir = '/content/drive/Shareddrives/SNC - All/6 - Colab/HiVisionEvent'
filecount=0
for root, dirs, files in os.walk(thisdir):
for file in files:
if file.endswith(".csv"):
s = os.path.join(root, file)
paths.append(s)
filecount +=1
print("Total files : ", filecount)
all_data = pd.DataFrame()
for files in paths:
df = pd.read_csv(files,header=None, sep=';')
all_data = all_data.append(df,ignore_index=True)
#add column headers
df.columns = ['Log No.','Safety Info','Status','DateTime','Delete','Loc','Property','Property Status']
使用pandas.concat
:可以做得更简单
import os
import pandas as pd
paths = []
thisdir = '/content/drive/Shareddrives/SNC - All/6 - Colab/HiVisionEvent'
for root, dirs, files in os.walk(thisdir):
for file in files:
if file.endswith(".csv"):
s = os.path.join(root, file)
paths.append(s)
print("Total files : ", len(paths))
dfs = [ pd.read_csv(file, header=None, sep=';') for file in paths ]
df = pd.concat(dfs)
#add column headers
df.columns = ['Log No.','Safety Info','Status','DateTime','Delete','Loc','Property','Property Status']
注意,我去掉了
filecount
(应该是paths
的长度,对吧?(。我还在for
循环中将files
重命名为file
。
这应该有效。
不要使用fsimonjetz注释中提到的df.append
,这是不推荐使用的。请改用pd.concat
。
如果您想要简单地一个接一个地"附加"数据帧df
,那么all_data = pd.concat([all_data,df], axis=0, ignore_index=True)
应该会给出您想要的内容。
参考:https://pandas.pydata.org/docs/reference/api/pandas.concat.html