Создание нескольких кадров данных pandas из одного кадра данных на основе итерации - PullRequest
0 голосов
/ 03 июля 2018

Из одного фрейма данных (tr) я пытаюсь создать несколько фреймов данных на основе набора столбцов (cat_col). Новые имена данных должны быть tr_'colname '. Может ли кто-нибудь помочь мне с приведенным ниже кодом?

for col in cat_col:
    tr_ = tr[[col,'TARGET']].groupby([col,'TARGET']).size().reset_index(name='Counts')
    tr_ = pivot_table(tr_,values='Counts',index=[col],columns=['TARGET'])
    print tr_.shape

Выход: (3, 2) (7, 2) (8, 2) (5, 2) (6, 2) (6, 2) (18, 2) (7, 2) (58, 2) (4, 2) (3, 2) (7, 2)

tr[['col1','TARGET']].head(10)

col1 TARGET 0 без сопровождения 1 1 семья 0 2 без сопровождения 0 3 без сопровождения 0 4 без сопровождения 0 5 Супруг, партнер 0 6 без сопровождения 0 7 без сопровождения 0 8 детей 0 9 без сопровождения 0

tr_col1.head(3)

ЦЕЛЬ 0 1 col1
Семья 37140 3009 Супруга, партнер 10475 895 Без сопровождения 228189 20337

1 Ответ

0 голосов
/ 03 июля 2018

Я думаю, что нужно:

tr = pd.DataFrame({'A':list('abcdefabcd'),
                   'B':list('abcdeabffe'),
                   'TARGET':[1,1,0,0,1,0,1,1,0,1]})

print (tr)
   A  B  TARGET
0  a  a       1
1  b  b       1
2  c  c       0
3  d  d       0
4  e  e       1
5  f  a       0
6  a  b       1
7  b  f       1
8  c  f       0
9  d  e       1

cat_col = ['A','B']

d = {}
for col in cat_col:
    tr_ = (tr[[col,'TARGET']].groupby([col,'TARGET'])
                            .size()
                            .unstack()
                            .reset_index()
                            .rename_axis(None, axis=1))
    #some another processes if necessary

    #check if outout is DataFrame  
    print (type(tr_))

    print (tr_)
    #if necessary store to dict
    d[col] = tr_

#select df from dict
print (d['A'])
   A    0    1
0  a  NaN  2.0
1  b  NaN  2.0
2  c  2.0  NaN
3  d  1.0  1.0
4  e  NaN  1.0
5  f  1.0  NaN
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...