Итерация по нескольким фреймам данных, сгенерированным с использованием "locals" - PullRequest
0 голосов
/ 18 января 2019

Я разбил фрейм данных "df" на более мелкие фреймы данных df1, df2 ... dfn так, чтобы все записи с одинаковым идентификатором (из столбца "UNIT-ID") были сгруппированы и сохранены в этих меньших фреймах данных.

Input:

UNIT-ID Q1  Q2  Q3
110-P1  37  487 0
110-P1  31  140 1
110-P1  46  214 1
110-P2  29  287 1
110-P2  45  131 1
110-P2  39  260 0
110-15  23  346 0
110-15  31  419 1
110-15  37  287 0
110-15  36  228 1
110-15  48  309 1

Output:
df1:        
 UNIT-ID    Q1  Q2  Q3
    110-P1  37  487 0
    110-P1  31  140 1
    110-P1  46  214 1

df2:            
 UNIT-ID    Q1  Q2  Q3
    110-P2  29  287 1
    110-P2  45  131 1
    110-P2  39  260 0

Я использовал приведенный ниже код для достижения этой цели, благодаря @ W-B, который ответил на вопрос .

variables = locals()
for i,j in enumerate(df.groupby('UNIT-ID')):
    variables["df{0}".format(i+1)] = j[1]
df1
Out[13]: 
   UNIT-ID  Q1   Q2  Q3
16  110-15  23  346   0
17  110-15  31  419   1
18  110-15  37  287   0
19  110-15  36  228   1
20  110-15  48  309   1

Далее я хочу выполнить несколько шагов предварительной обработки и модель глубокого обучения для каждого из этих отдельных фреймов данных. Теперь эти файлы данных - df1, df2 .. dfn, не хранятся в любом месте на локальном диске, но они имеют был создан и может быть обращен, если проверено. Есть ли способ перебрать эти фреймы данных?

Можно использовать «dict» для разделения на df1, df2 ... dfn следующим образом, но, используя эту опцию, мне нужно сохранить каждый df в физическом месте и прочитать его снова, так как dfs все еще хранятся в dict и должны быть извлечены путем вызова отдельно. Есть ли способ сделать эту задачу, используя "местные жители" или любой другой метод?

d={"df{0}".format(i+1):j[1]for i,j in enumerate(df.groupby('UNIT-ID'))}
d['df1']
Out[17]: 
   UNIT-ID  Q1   Q2  Q3
16  110-15  23  346   0
17  110-15  31  419   1
18  110-15  37  287   0
19  110-15  36  228   1
20  110-15  48  309   1

1 Ответ

0 голосов
/ 18 января 2019

Вы можете попробовать что-то вроде перебора всех ваших кодовых переменных, выбрав по имени тех, кто является вашими "под-фреймами" (например, используя шаблон в их именах, таких как subDf), и они выполняют что-то просто в эти переменные. Чтобы сделать мою идею более понятной, запустите приведенный ниже пример:

variables = locals()
for i,j in enumerate(df.groupby('UNIT-ID')):
    variables["subDf{0}".format(i+1)] = j[1]

for each in [v for k,v in variables.items() if 'subDf' in k]:
    print(v)

#output:
#   UNIT-ID  Q1   Q2  Q3
#6   110-15  23  346   0
#7   110-15  31  419   1
#8   110-15  37  287   0
#9   110-15  36  228   1
#10  110-15  48  309   1


#  UNIT-ID  Q1   Q2  Q3
#0  110-P1  37  487   0
#1  110-P1  31  140   1
#2  110-P1  46  214   1


#  UNIT-ID  Q1   Q2  Q3
#3  110-P2  29  287   1
#4  110-P2  45  131   1
#5  110-P2  39  260   0

Таким образом, вы можете распечатать все подкадры без необходимости их сохранения в другом месте. Поскольку я не уверен, что именно вы планируете делать со своими данными, я не могу сказать, является ли это лучшим подходом. Но, безусловно, будет перебирать созданные вами кадры данных!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...