Python 如何跳过几行并在熊猫中读取为数据帧?
我几乎没有txt格式的文件。它们是按标签分类的,但前几行有一些垃圾。我必须按pd.dataframe读取所有数据,删除所有垃圾行并合并在一起 我被以下代码读取文件: dataFromRawFile=pd.read\u csv('texttt.txt',sep=“,”,header=None) 打印(dataFromRawFile) 文件看起来像: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
[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”。或者可以通过字符串查找行,给它一个数字,并将该数字用作跳过值?。编辑:我是这样做的。谢谢你的指导。