Пропустить строки выше и ниже желаемых данных в CSV-файле - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть несколько 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 каким-то образом искать нужные мне данные, и это избавит от любых ошибок при вводе неправильных строк?

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

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

в соответствии с вашей второй идеей, «если данные не отображаются в строке 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 голосов
/ 22 февраля 2019

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...