Как я могу нарезать фрейм данных на несколько и объединить его в кортеж без жесткого кодирования - PullRequest
0 голосов
/ 22 февраля 2019

Я делю фрейм данных по столбцу идентификатора и создаю подмножество фреймов данных, используя for loop и globals ().И, наконец, я объединяю все фрагменты данных в кортеж.Как вы можете видеть, создание кортежа выполняется вручную, но мне нужно расширить мой код до гораздо большего набора данных, и я не могу сделать это вручную, и я хотел добавить этот шаг в цикл for, чтобы иметь tup за один шаг без необходимости набирать «tup = (TT_a, TT_b, TT_c, TT_d, TT_e)».Мне просто нужен вывод, поэтому, пожалуйста, предложите любой способ добиться этого, не нужно использовать глобалы ()

#creates dataframe
import pandas as pd
loc = [100,200,300,400,500,600,700,800,900,1000]
identifier = ['a','a','a','a','b','b','c','d','e','f']
d = {'loc':loc,'identifier':identifier}
df = pd.DataFrame(d)


#create sliced dataframe by identifier, 6 unique
for i in df['identifier'].unique():
    globals()['TT_%s' % i] = df[df['identifier'] == i].reset_index()[['loc','identifier']]

% who

TT_a   TT_b    TT_c    TT_d    TT_e    TT_f    d   df  i   
identifier     loc     pd
#Final Output needed
tup = (TT_a,TT_b,TT_c,TT_d,TT_e)

1 Ответ

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

Прежде всего, пожалуйста, не используйте globals вот так ...

Используйте словарь:

d={}
for i in df['identifier'].unique():
    if len(df.loc[df['identifier'] == i,'identifier']) > 1:
        d['TT_%s' % i] = df.loc[df['identifier'] == i, ['loc','identifier']].reset_index()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...