如何在熊猫中跳过几行并读为数据框?

时间:2019-02-06 11:40:48

标签: python csv rows

我的txt文件很少。它们是按选项卡分隔的,但在前几行中有一些垃圾。我必须通过pd.dataframe阅读所有内容,删除所有垃圾箱行并合并在一起。

我通过以下代码读取文件: dataFromRawFile = pd.read_csv('texttt.txt',sep =“,”,标头=无) 打印(dataFromRawFile)

文件如下:

[trash]: trash
[trash_umbers]:3224
trash_name
[DATA]
id    number    color
good  good      good
good  good      good
good  good      good 
good  good      good

如何修改该pandas命令以读取没有所有废纸trash行的数据框?假设我希望从所有文件中唯一固定的值(即从“ id”)加载文件。 如何通过这种特定的方式读取该文件?

3 个答案:

答案 0 :(得分:1)

使用skiprowsread_csv的{​​{1}}功能。

在您的情况下,请尝试read_table

答案 1 :(得分:1)

首先,您需要获取目录中每个文件的id列的行号(假定它们都是.txt文件;请相应地修改条件)。可以通过以下方式完成:

import os

skip_rows = {}

for filename in os.listdir():
    if os.splitext(filename)[1] == '.txt':
        with open(filename) as f:
            lines = f.readlines()
            skip_rows[filename] = [index for index, line in enumerate(lines) if line[:2] == 'id'][0]

现在,skip_rows应该包含每个文件要跳过的行数。

然后您可以执行以下操作:

dataframes = {filename: pd.read_csv(filename, skiprows=n_rows) for filename, n_rows in skip_rows.items()}

并从dataframes中的每个元素中读取。

答案 2 :(得分:0)

在使用skiprows方法的同时使用熊猫的pd.read_csv()属性。

例如,您想将整个表放入数据框中。

因此编写一个函数,该函数将在文件中找到单词“ id”。

def get_loc():
with open (filename) as f:
    for num, line in enumerate(f,1):
        if 'word_to_find' in line.strip().lower():
            break
    return num

这将为您提供位置。

然后只用

df = pd.read_csv(yourfilename, skiprows = getloc()-1)