我正在尝试从共享相同列名称的不同 .csv 文件收集数据。但是,某些 csv 文件的标题位于不同的行中。
有没有办法根据包含“大多数”值(实际标题名称)的第一行动态确定标题行?
我尝试了以下方法:
def process_file(file, path, col_source, col_target):
global df_master
print(file)
df = pd.read_csv(path + file, encoding = "ISO-8859-1", header=None)
df = df.dropna(thresh=2) ## Drop the rows that contain less than 2 non-NaN values. E.g. metadata
df.columns = df.iloc[0,:].values
df = df.drop(df.index[0])
然而,当使用pandas.read_csv()
,似乎第一个值决定了实际数据帧的大小,因为我收到以下错误消息:
pandas.errors.ParserError:标记数据时出错。 C 错误:预期 1
第 4 行的字段,锯 162
正如您在本例中所看到的,标题行将位于第 4 行。
添加时error_bad_lines=False
对于 read_csv,只有元数据会被读入数据帧。
这些文件可以具有以下结构:
一个“普通”文件:
row1 col1 col2 col3 col4 col5
row2 val1 val1 val1 val1 val1
row3 val2 val2 val2 val2 val2
row4
或标题前带有元数据的结构:
row1 metadata1
row2 metadata2
row3 col1 col2 col3 col4 col5
row4 val1 val1 val1 val1 val1
非常感谢任何帮助!