Итерация по 2 столбцам структурированного файла - PullRequest
0 голосов
/ 16 февраля 2019

Я пытаюсь разобрать часть огромного набора данных.Часть набора данных, который у меня есть, представляет собой gzip-файл объемом 3 ГБ.Файл структурирован так, что в нем есть x столбцов и миллионы строк.Столбцы разделены запятыми или каким-то общим оператором, чтобы я мог прочитать файл.

То, что я хочу сделать, основано на 2 диапазонах (т. Е. Значение a

Что яотсутствует фундаментальное понимание того, как обрабатывать итерации, как это.Я борюсь с тем, что делать с множеством после того, как я использовал функцию pandas read_csv для фильтрации набора данных.Я думаю, что я должен использовать фреймы данных для доступа к данным, которые я ищу, но я не уверен.

Ответы [ 2 ]

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

Раствор с DataFrame.query для фильтрации:

#anky_91 dataset
df1 = df.query('10 < C < 15 & 40 < D < 50 ')
print (df1)
   A  B   C   D
1  Y  a  12  44
3  W  a  11  47
0 голосов
/ 16 февраля 2019

IIUC, Создание минимального воспроизводимого примера:

from io import StringIO 
data = StringIO("""X, a, 1, 15
Y, a, 12, 44
Z, a, 13, 39
W, a, 11, 47""")
df=pd.read_csv(data,header=None)
df.columns=['A','B','C','D']
print(df)

  A   B   C   D
0  X   a   1  15
1  Y   a  12  44
2  Z   a  13  39
3  W   a  11  47

Теперь для фильтров, использующих series.between() и df.loc[]:

cond1 = df['C'].between(10,15) #check if C betwen 10,15
cond2 = df['D'].between(40,50) #check if D between 40 and 50
df_new=df.loc[cond1&cond2] #pull data where both condition matches and place in new_df
print(df_new)

   A   B   C   D
1  Y   a  12  44
3  W   a  11  47

Если вам удобны sql запросы ( только для экспериментов ) :):

import pandasql as ps
ps.sqldf('select * from df where df.C between 10 and 15 and df.D between 40 and 50')

   A   B   C   D
0  Y   a  12  44
1  W   a  11  47
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...