Пропустить строки выше и ниже нужных данных в файле csv

У меня есть несколько CSV-файлов, которые выглядят примерно так:

>>> print(df)
    x x.1 x.2 x.3  ... Unnamed: 33 Unnamed: 34 Unnamed: 35 Unnamed: 36
0   x   x   x   x  ...           x           x           x           x
1   x   x   x   x  ...           x           x           x           x
2   x   x   x   x  ...         NaN         NaN         NaN         NaN
3   x   x   x   x  ...         NaN         NaN         NaN         NaN
4   x   x   x   x  ...         NaN         NaN         NaN         NaN
5   x   x   x   x  ...         NaN         NaN         NaN         NaN
6   x   x   x   x  ...         NaN         NaN         NaN         NaN
7   x   x   x   x  ...         NaN         NaN         NaN         NaN
8   x   x   x   x  ...         NaN         NaN         NaN         NaN
9   x   x   x   x  ...         NaN         NaN         NaN         NaN
10  x   x   x   x  ...         NaN         NaN         NaN         NaN
11  x   x   x   x  ...         NaN         NaN         NaN         NaN
12  x   x   x   x  ...         NaN         NaN         NaN         NaN
13  x   x   x   x  ...         NaN         NaN         NaN         NaN
14  A   A   A   A  ...         NaN         NaN         NaN         NaN
15  B   B   B   B  ...         NaN         NaN         NaN         NaN
16  C   C   C   C  ...         NaN         NaN         NaN         NaN
17  D   D   D   D  ...         NaN         NaN         NaN         NaN
18  E   E   E   E  ...         NaN         NaN         NaN         NaN
19  F   F   F   F  ...         NaN         NaN         NaN         NaN
20  x   x   x   x  ...         NaN         NaN         NaN         NaN
21  x   x   x   x  ...         NaN         NaN         NaN         NaN
22  x   x   x   x  ...         NaN         NaN         NaN         NaN
23  x   x   x   x  ...         NaN         NaN         NaN         NaN
24  x   x   x   x  ...         NaN         NaN         NaN         NaN

[25 rows x 37 columns]

В этом CSV-файле много разных типов данных, но мне нужны только те данные, которые помечены A-F. У меня есть большое количество этих CSV-файлов, поэтому я хочу объединить их вместе, но только с теми данными, которые мне нужны.

У меня есть два подхода, один лучше другого.

(1) Данные, которые мне нужны, почти всегда находятся в строке 14-19 и имеют длину 4 столбца. Итак, о чем я думал каждый раз, когда я читал в одном из этих CSV-файлов, я могу пропускать строки выше 14 и ниже 19, однако я не знаю, как это сделать?

Что-то вроде этого data = pd.read_csv(file,skiprows=[0:14]) однако я также хочу пропустить все строки после 19? Есть ли способ просто загрузить строки 14-19 только столбцами 0-4?

(2) Моя вторая идея. Я не уверен, что это возможно, но в случае, если данные не отображаются в строке 14-19 в одном файле, возможно, я смогу заставить Python каким-то образом искать нужные мне данные, и это избавит от любых ошибок при получении неправильные строки?

Любая помощь приветствуется, спасибо!

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
91
2

Ответы 2

У pandas есть дополнительный параметр nrows, который можно использовать для чтения только указанного количества строк.

>>> import pandas as pd
>>> df = pd.read_csv(filename, skiprows=list(range(14)), n_rows=6)
>>> df
    x x.1 x.2 x.3  ... Unnamed: 33 Unnamed: 34 Unnamed: 35 Unnamed: 36
0   A   A   A   A  ...         NaN         NaN         NaN         NaN
1   B   B   B   B  ...         NaN         NaN         NaN         NaN
2   C   C   C   C  ...         NaN         NaN         NaN         NaN
3   D   D   D   D  ...         NaN         NaN         NaN         NaN
4   E   E   E   E  ...         NaN         NaN         NaN         NaN
5   F   F   F   F  ...         NaN         NaN         NaN         NaN

Пропуск строк на самом деле не работает? Я получаю тот же результат, пропуская первые 3 строки, что и пропуская первые 7 строк, есть идеи, почему это так?

user11015000 22.02.2019 02:07

Извините, да, я ошибся. Параметр должен быть skiprows, а не skip_rows. Кроме того, документы pandas указывают, что skiprows - это «Номера строк для пропуска (0-индексированные) или количество строк для пропуска (int) в начале файла». Так что это должен быть список или int. Я скорректировал ответ соответственно.

Clemson 22.02.2019 06:47

следуя вашей второй идее «в случае, если данные не отображаются в строке 14-19 в одном файле»:

 #getting the desired rows
df_desired = data.loc[  (data['x'] == 'A') | (data['x'] == 'B')|(data['x'] == 'C') | (data['x'] == 'E')| (data['x'] == 'F')]

 #getting the first 4 columns
df=df.ix[:,[0:4]]

Привет, я получаю неверный синтаксис точки с запятой в 0:4?

user11015000 22.02.2019 00:48

у меня нет ваших фактических данных для проверки, но вторая строка кода просто получает первые 4 столбца, можете ли вы попробовать разные способы?

Jessica 22.02.2019 01:37

Другие вопросы по теме