在附加数据帧时需要帮助



我正在尝试将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

最新更新