Перетаскиваемые столбцы содержат определенные строки при чтении данных: python - PullRequest
2 голосов
/ 07 февраля 2020

Я читаю .txt файлы в каталоге и хочу удалить столбцы, содержащие некоторую определенную строку.

for file in glob.iglob(files + '.txt', recursive=True):

    cols = list(pd.read_csv(file, nrows =1))

    df=pd.read_csv(file,header=0, skiprows=0, skipfooter=0, usecols =[i for i in cols if i.str.contains['TRIVIAL|EASY']==False])

, когда я делаю это, я получаю

df = pd.read_csv (файл, заголовок = 0, skiprows = 0, skipfooter = 0, usecols = [i для i> в столбцах, если i.str.contains ['PASS'] == True])

AttributeError: у объекта 'str' нет атрибута 'str'

В какой части мне нужно исправить tp, я не смог понять это?

выбрать столбцы на основе имен столбцов содержащий указанную c строку в pandas

отбрасываемом столбце на основе условия строки

AttributeError: у объекта 'str' нет атрибут 'str'

Удалить несколько столбцов, заканчивающихся определенной строкой, в Pandas

Ответы [ 2 ]

3 голосов
/ 07 февраля 2020

несколько ошибок в вашем коде, во-первых, вы используете str.contains на всем кадре данных, а не на столбцах, во-вторых, содержащаяся строка не может использоваться в списке.

с использованием регулярных выражений

import re

cols = pd.read_csv(file, nrows =1)

cols_to_use = [i for i in cols.columns if not re.search('TRIVIAL|EASY',i)] 


df=pd.read_csv(file,header=0, skiprows=0, skipfooter=0, usecols  =cols_to_use)
2 голосов
/ 07 февраля 2020

Не читая заголовок отдельно, вы передадите вызываемое значение usecols. Проверьте, не указаны ли 'EASY' или 'TRIVIAL' в имени столбца.

exclu = ['EASY', 'TRIVIAL']  # Any substring in this list excludes a column 
usecols = lambda x: not any(substr in x for substr in exclu)

df = pd.read_csv('test.csv', usecols=usecols)

print(df)
   HARD  MEDIUM
0     2       4
1     6       8
2     1       1

Пример данных: test.csv

TRIVIAL,HARD,EASYfoo,MEDIUM
1,2,3,4
5,6,7,8
1,1,1,1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...