gpt4 book ai didi

python - 在pandas中读取csv时自动确定标题行

转载 作者:行者123 更新时间:2023-12-04 01:33:21 25 4
gpt4 key购买 nike

我正在尝试从共享相同列名的不同 .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: Error tokenizing data. C error: Expected 1 fields in line 4, saw 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

非常感谢任何帮助!

最佳答案

恕我直言,如果暂时忘记 Pandas ,最简单的方法是:

  • 您将文件作为文本文件打开以读取
  • 你开始一行一行的解析,猜一行是不是
  • 元数据头
  • 真正的标题行
  • 数据线

  • 一种简单的方法是将从真实标题行开始的所有行连接到一个字符串中(我们称之为 buffer ),然后使用 pd.read_csv(io.StringIO(buffer), ...)

    关于python - 在pandas中读取csv时自动确定标题行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60434664/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com