我的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”)加载文件。 如何通过这种特定的方式读取该文件?
答案 0 :(得分:1)
使用skiprows
或read_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)