Как сгруппировать Dataframe в Pandas и сохранить целые поля в выходных данных - PullRequest
0 голосов
/ 12 июня 2018

Я хочу группы, основанные на трех столбцах, но сохраняю исходные столбцы в выводе (6 столбцов).

эта ссылка На самом деле мне это не помогло.он просто имел три столбца и сгруппирован на основе этих трех столбцов.

это пример моего original фрейма данных:

   Clinic Number  Question Text  Answer Text Answer Date     year  month dayofyear
1       1        bathing            No    2006/7/1     2006    1         7
2       1        dressing           No    2006/7/1     2006    1         7
3       1        feeding            NO    2006/7/1     2006    1         7
4       1        housekeeping       No    2006/7/1     2006    1         7
5       1        medications        No    2006/7/1     2006    1         7
6       2        bathing            No    2006/1/1     2006    1         1
7       2        dressing           Yes   2006/1/1     2006    1         1
8       2        feeding            Yes   2006/1/1     2006    1         1
9       2        housekeeping       Yes   2006/1/1     2006    1         1
10      2        medications        No    2006/1/1     2006    1         1

Я хочу сгруппировать по [clinicNumber,Answer Text, Year,month], ноМне нужны другие столбцы, такие как столбец Answer Date and question Text, yearOfday, потому что позже я хочу сделать некоторые вычисления для них.

Что я сделал: это группа, которую я использую на этом кадре данных для достижения своей цели.проблема в том, что в выводе нет Answer date ,yearofyear ....

grouped = data.groupby(['Clinic Number','year','month','Answer Text']).size().reset_index(name='counts')

вывод этой группы выглядит следующим образом:

 Clinic Number    year   month   Answer Text  counts
0         1       1999     5          No       6
1         1       2000    10          No       6
2         1       2000     2          No       6
3         1       2001     9          Yes       6
4         1       2002     2          Yes       8
5         1       2003     2          No       8
6         1       2004     4          No       8
7         1       2014     6          No       2
8         1       2015    10          No       2
5         2       2003     2          No       8
6         2       2004     4          No       8
7         2       2014     6          No       2
8         2       2015    10          No       2

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

1 Ответ

0 голосов
/ 12 июня 2018

IIUC, используйте groupby с transform и установите его в новый столбец в существующем фрейме данных.

data['counts'] = (data.groupby(['Clinic Number',
                                'year',
                                'month',
                                'Answer Text'])['Clinic Number']
                      .transform('size'))

data = data.sort_values(['Client Number','Answer Date'])

Вывод:

    Clinic Number Question Text Answer Text Answer Date  year  month  dayofyear  counts
1               1       bathing          No    2006/7/1  2006      1          7       4
2               1      dressing          No    2006/7/1  2006      1          7       4
3               1       feeding          NO    2006/7/1  2006      1          7       1
4               1  housekeeping          No    2006/7/1  2006      1          7       4
5               1   medications          No    2006/7/1  2006      1          7       4
6               2       bathing          No    2006/1/1  2006      1          1       2
7               2      dressing         Yes    2006/1/1  2006      1          1       3
8               2       feeding         Yes    2006/1/1  2006      1          1       3
9               2  housekeeping         Yes    2006/1/1  2006      1          1       3
10              2   medications          No    2006/1/1  2006      1          1       2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...