Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何跳过几行并在熊猫中读取为数据帧?_Python_Csv_Rows - Fatal编程技术网

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

Python 如何跳过几行并在熊猫中读取为数据帧?,python,csv,rows,Python,Csv,Rows,我几乎没有txt格式的文件。它们是按标签分类的,但前几行有一些垃圾。我必须按pd.dataframe读取所有数据,删除所有垃圾行并合并在一起 我被以下代码读取文件: dataFromRawFile=pd.read\u csv('texttt.txt',sep=“,”,header=None) 打印(dataFromRawFile) 文件看起来像: [trash]: trash [trash_umbers]:3224 trash_name [DATA] id number color

我几乎没有txt格式的文件。它们是按标签分类的,但前几行有一些垃圾。我必须按pd.dataframe读取所有数据,删除所有垃圾行并合并在一起

我被以下代码读取文件: dataFromRawFile=pd.read\u csv('texttt.txt',sep=“,”,header=None) 打印(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命令以读取数据帧而不读取所有垃圾行?假设我希望从所有文件中唯一的固定值(即“id”)加载文件。
如何通过此特定命令读取该文件?

使用
skiprows
功能的
read\u csv
read\u table


在您的情况下,尝试使用
read\u csv
read\u table
skiprows

功能


在您的情况下,请首先尝试
skiprows=4

,您需要获取目录中每个文件的
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()}

首先,您需要获取目录中每个文件的
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()}

在使用
pd.read\u csv()
方法的同时,使用pandas的
skiprows
属性读取数据帧中的每个元素

例如,假设您希望将整个表放入您的数据帧中

因此,编写一个函数来定位文件中的单词“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)

使用pandas的
skiprows
属性,同时使用
pd.read\u 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)

谢谢重播,但我需要跳过一些字符串。例如:读取文件,查找“id”之前的行并删除上面的所有行使用skiprows=4时会得到什么?我得到了我想要的:)但是我的一些文件有更多的垃圾行,在任何情况下我都必须修改“skiprows=4”。或者可以通过字符串查找行,给它一个数字,并将该数字用作跳过值?。编辑:我是这样做的。谢谢你的指导。谢谢你的重播,但我需要跳过一些字符串。例如:读取文件,查找“id”之前的行并删除上面的所有行使用skiprows=4时会得到什么?我得到了我想要的:)但是我的一些文件有更多的垃圾行,在任何情况下我都必须修改“skiprows=4”。或者可以通过字符串查找行,给它一个数字,并将该数字用作跳过值?。编辑:我是这样做的。谢谢你的指导。