Python读取csv文件,并跳过非固定长度的标题部分

时间:2018-04-11 11:19:22

标签: python pandas

我正在阅读一些文件,其中包含非固定长度的标题,并且不知道如何跳过"标题部分"直到感兴趣的数据出现。文件内容如下所示,我总是对行"Measurement values:"之后的内容感兴趣,我可以以某种方式使用熊猫read_csv的{​​{1}}参数,并结合使用一个搜索字符串,或类似的,以清除标题部分?

欢迎任何意见: - )

skiprows

3 个答案:

答案 0 :(得分:1)

我不确定这是否是正确的方法。

            <div class="btn-group">
                <button class="btn btn-sm dropdown-toggle" data-toggle="dropdown">
                    <i class="fa fa-wrench"></i> <span class="caret"></span>
                </button>
                <ul class="dropdown-menu fa-pull-right">
                    <li>
                        <a href="@Url.Action("Edit", new { id = item.ID })">
                            <i class="fa fa-pencil"></i> Edit
                        </a>
                    </li>
                    <li>
                        <a id="DeleteBoard" data_number="@item.ID">
                            <i class="fa fa-trash"></i> Delete
                        </a>
                    </li>
                    <li>
                        <a href="@Url.Action("Details", new { Id = item.ID })">
                            <i class="fa fa-info-circle"></i> Details
                        </a>
                    </li>
                </ul>
            </div>

<强>输出:

import pandas as pd
df = pd.read_csv(r"filename.csv")
lineNumber = 0
for i, v in enumerate(df.to_string(index=False).split("\n"), 1):
    if "Measurement values" in v:
        lineNumber = i                          #Find line number of "Measurement values"
        break

df = pd.read_csv(r"filename.csv", skiprows=lineNumber)    #Read file again with lineNumber 
print(df)

应该有解决方案而不读取文件两次。

答案 1 :(得分:1)

非常类似于Rakesh的答案,但没有阅读整个文件只是为了找到“测量值:”的行

import pandas as pd

file_name = r"filename.csv"

line_number = -1

with open(file_name, "r") as in_file:
    for i, line in enumerate(in_file, 1):
        if line.startswith("Measurement values:"):
            lineNumber = i
            break

if line_number == -1:
    raise RuntimeError("Could not find end of header")

df = pd.read_csv(file_name, skiprows = line_number)
print(df)

答案 2 :(得分:0)

我在阅读excel时使用下面的内容跳过第一行,你可以为csv文件做同样的事情。 df = pandas.read_excel(excelFile, header=2)