Собирать строки на основе уникального идентификатора данных Pandas - PullRequest
0 голосов
/ 18 декабря 2018

У меня есть большой набор данных временного ряда, причем некоторые из наблюдений (каждое с уникальным идентификатором) имеют разную длину.У меня также есть столбец «Раздел», в котором подсчитываются временные шаги или строки для каждого уникального идентификатора.

df.groupby([df['ID']]).agg({'count'})

                                  A             B                         Z
                                 count         count         ...         count   
    ID                                                        
    25782                          194           194                      194   
    25783                          198           198                      198   
    25784                          194           194                      194   
    25785                          192           192                      192   
   ...                             ...           ...          ...          ...
    25787                          192           192                      192   
    25788                          195           195                      195   
    25789                          196           196                      196   
    25790                          200           200                      200   

говорят, что я хочу создать новый кадр данных, состоящий только из тех случаев, когда длина уникального идентификатора = 192. Т.е. раздел'до 192.

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

mask = df.groupby('ID')(len(df['Section']) == 192)
df = df.loc[mask]
print(df)

И

df.groupby('ID').df[df['Section'].max() == 192]

edit

Желаемый вывод

new_df.groupby([new_df['ID']]).agg({'count'})

                               A             B                         Z
                             count         count         ...         count   
ID                                                        
25752                          192           192                      192   
25137                          192           192                      192   
25970                          192           192                      192   
25440                          192           192                      192  

1 Ответ

0 голосов
/ 18 декабря 2018

Вы можете использовать filter после groupby, чтобы оставить только ID, где длина столбца 'Section' равна 192, например:

new_df = df.groupby('ID').filter(lambda x: len(x['Section']) == 192)

Затем, когда вы делаете new_df.groupby('ID').agg({'count'}), вы должны получить ожидаемый результат

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