Pandas在阅读CSV之前忽略前几行

qxgroojn  于 2023-04-28  发布在  其他
关注(0)|答案(2)|浏览(208)

我使用Pandas库和Python。
我有一个Excel文件,在Excel工作表的顶部有一些标题信息,我不需要进行数据提取。
但是,标题信息可能需要更长的行,因此无法预测它可能需要多长时间。
所以,我的数据提取应该从它说“ID”的地方开始……对于这个特定的例子,它从第5行开始,但它可能会改变。
图像显示在底部(我在第5行后为敏感信息变灰)。
我该如何在逻辑上把它放进去(跳过标题并跳到第5行)?模式应该是,行标题从“ID,EMP_ID”开始,等等。

with open('File.xls') as fp:
    skip = next(filter(
        lambda x: x.startswith('ID'),
        enumerate(fp)
    ))[0]

df = pd.read_excel('File.xls', usercols=['ID', 'EMP_ID'], skiprows=skip)
print df
col17t5w

col17t5w1#

您可以使用pd.read_csv并指定skiprows=4

df = pd.read_csv('test.csv', skiprows=4)
drkbr07n

drkbr07n2#

您可以手动检查标题行,然后使用read_csv的关键字参数skiprows

with open('data.csv') as fp:
    skip = next(filter(
        lambda x: x[1].startswith('ID'),
        enumerate(fp)
    ))[0]

然后跳过行:

df = pandas.read_csv('data.csv', skiprows=skip)

这样你就可以支持任意长度的pre-header部分。
对于Python 2:

import itertools as it

with open('data.csv') as fp:
    skip = next(it.ifilter(
        lambda x: x[1].startswith('ID'),
        enumerate(fp)
    ))[0]

相关问题