Поиск CSV для строки в столбце и отображать только специальные столбцы - PullRequest
0 голосов
/ 27 октября 2018

Я хотел бы найти строку в 1 столбце очень большого CSV-файла с 70+ столбцами.

Как только найдены строки, в которых появляется эта строка, я хотел бы отображать данные только в определенном наборе столбцов.

Вот то, что я держу, дает мне ошибки

import pandas as pd
df = pd.read_csv('output.csv')
#columns I would like to display data from
df[df.iloc[0,1,2,11,12,14]] 
#search for specific term in specific column
df.loc[df['COLUMN NAME'].str.contains('SEARCH TERM')] 

0,1,2,11,12,14 - это номера столбцов, которые я хотел бы отобразить. В других столбцах есть данные, которые меня не интересуют.

import pandas as pd
df = pd.read_csv('output.csv')
df.loc[df['COLUMN NAME'].str.contains('SEARCH TERM')]

Приведенный выше код дает мне все данные из всех столбцов, когда строка найдена, но это слишком много бесполезных данных для этого простого приложения.

Это похоже на супер простое исправление, но я не могу понять это.

Заранее благодарю за любую помощь!

1 Ответ

0 голосов
/ 27 октября 2018

Вы можете использовать usecol параметр конструктора panda.read_csv, чтобы определить, какие столбцы вам нужны. Wiki: read_csv

usecols: list-like или callable, по умолчанию Нет

Возвращает подмножество столбцов. Если список похож, все элементы должны либо быть позиционным (то есть целочисленные индексы в столбцах документа) или строки, которые соответствуют именам столбцов, предоставленных пользователем в имена или вывод из строки заголовка документа. Например, допустимый параметр списка соединений, подобный списку, будет [0, 1, 2] или [‘foo’, ‘bar’, «Баз»]. Порядок элементов игнорируется, поэтому usecols = [0, 1] совпадает с [1, 0]. Создание экземпляра DataFrame из данных с сохранением порядка элементов используйте pd.read_csv (data, usecols = ['foo', 'bar']) [['foo', 'bar']] для столбцы в порядке ['foo', 'bar'] или pd.read_csv (data, usecols = ['foo', 'bar']) [['bar', 'foo']] для порядка ['bar', 'foo'].

Если вызывается, вызываемая функция будет оцениваться по имена столбцов, возвращающие имена, в которых вызываемая функция оценивается как Правда. Примером допустимого вызываемого аргумента будет лямбда-x: x.upper () в ['AAA', 'BBB', 'DDD']. Использование этого параметра приводит к намного более быстрое время разбора и более низкое использование памяти.

Так что в вашем случае это будет:

import pandas as pd
df = pd.read_csv(
    'output.csv',
    usecols=[0,1,2,11,12,14]
)
df.loc[df['COLUMN NAME'].str.contains('SEARCH TERM')] 

Вы можете указать либо массив идентификаторов столбцов, либо массив имен

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...