Выберите конкретные столбцы 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']]
Это решило мою проблему.