Выберите конкретные столбцы CSV (Фильтрация) - Python/pandas

У меня есть очень большой файл CSV со 100 столбцами. Чтобы проиллюстрировать мою проблему, я буду использовать очень простой пример.

Предположим, что у нас есть файл CSV.

in  value   d     f
0    975   f01    5
1    976   F      4
2    977   d4     1
3    978   B6     0
4    979   2C     0

Я хочу выбрать определенные столбцы.

import pandas
data = pandas.read_csv("ThisFile.csv")

Чтобы выбрать первые 2 столбца, я использовал

data.ix[:,:2]

Чтобы выбрать разные столбцы, такие как 2-й и 4-й. Что мне делать?

Существует другой способ решить эту проблему, перезаписав файл CSV. Но это огромный файл; Поэтому я избегаю этого.

Ответ 1

Это выбирает второй и четвертый столбцы (поскольку Python использует индексирование на основе 0):

In [272]: df.iloc[:,(1,3)]
Out[272]: 
   value  f
0    975  5
1    976  4
2    977  1
3    978  0
4    979  0

[5 rows x 2 columns]

df.ix может выбрать местоположение или метку. df.iloc всегда выбирает местоположение. При индексировании по местоположению используйте df.iloc для более четкого указания вашего намерения. Это также немного быстрее, так как Pandas не нужно проверять, использует ли ваш индекс метки.


Другая возможность - использовать параметр usecols:

data = pandas.read_csv("ThisFile.csv", usecols=[1,3])

Это будет загружать только второй и четвертый столбцы в data DataFrame.

Ответ 2

Если вы предпочитаете использовать столбцы по имени, вы можете использовать

data[['value','f']]

   value  f
0    975  5
1    976  4
2    977  1
3    978  0
4    979  0

Ответ 3

Как сказал Вай Ип Тунг, вы можете фильтровать ваш фрейм данных во время чтения, указав имя столбцов, например:

import pandas as pd
data = pd.read_csv("ThisFile.csv")[['value','d']]

Это решило мою проблему.