如何跳过几行,读为大熊猫数据帧?

问题描述 投票:0回答:3

我在TXT几个文件。他们是由制表九月但在第几行的一些垃圾。我把所有的pd.dataframe阅读,删除所有垃圾行合并到一起。

我被这种代码读取文件:dataFromRawFile = pd.read_csv( 'texttt.txt',九月= “”,标题=无)打印(dataFromRawFile)

文件看起来像:

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

我怎么能修改,大熊猫命令没有所有的垃圾行读取数据帧?比方说,我想可以从“ID”中的所有文件的唯一固定值,即加载的文件。如何才能读取这个特定strign该文件?

python csv rows
3个回答
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各元件读出。


1
投票

使用skiprowsread_csvread_table功能。

在你的情况下,尝试skiprows=4


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)
© www.soinside.com 2019 - 2024. All rights reserved.