Как объединить по партии / чанку строк (установлено) - PullRequest
0 голосов
/ 08 февраля 2019

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

                      REFERENCE_CODE           translation
0                      partyfav_batt                   xyz
1                party_fav_Cambiemos                   yxz
2   party_fav_argentina_kirchnerismo                   yzx
3       partyfav_argentina_Peronismo                   zyx
4                                NaN                   NaN
5                                  1                   NaN
6                                  2                   NaN
7                                  3                   NaN
8                                  4                   NaN
9                                  8                   NaN
10                                 9                   NaN
11                               NaN                   NaN
12                     partyfav_batt                   NaN
13              partyfav_brazil_PMDB                   NaN
14              partyfav_brazil_PSDB                   NaN
15                partyfav_brazil_PP                   NaN
16                partyfav_brazil_PT                   NaN
17                               NaN                   NaN
18                                 1                   NaN
19                                 2                   NaN
20                                 3                   NaN
21                                 4                   NaN
22                                 8                   NaN
23                                 9                   NaN
24                               NaN                   NaN

Согласно Энди Хейдену,

TypeError: неверный тип операнда для унарного ~: 'float'

Я выполняю эти команды для объединения соответствующих:

df.REFERENCE_CODE = df.REFERENCE_CODE.fillna('').astype(str)
headers = (df.REFERENCE_CODE != '') & ~df['REFERENCE_CODE'].fillna('').str.isnumeric()
res = df.groupby(headers.cumsum())['REFERENCE_CODE'].apply(lambda x: x.iloc[0] + '_' + x)
df.REFERENCE_CODE.update(res[df.REFERENCE_CODE.str.isnumeric()])

, чтобы получить такой вывод:

                      REFERENCE_CODE           translation
0                      partyfav_batt                   xyz
1                party_fav_Cambiemos                   yxz
2   party_fav_argentina_kirchnerismo                   yzx
3       partyfav_argentina_Peronismo                   zyx
4                                                      NaN
5     partyfav_argentina_Peronismo_1                   a
6     partyfav_argentina_Peronismo_2                   b
7     partyfav_argentina_Peronismo_3                   c
8     partyfav_argentina_Peronismo_4                   d
9     partyfav_argentina_Peronismo_8                   e
10    partyfav_argentina_Peronismo_9                   f
11                                                     NaN
12                     partyfav_batt                   NaN
13              partyfav_brazil_PMDB                   NaN
14              partyfav_brazil_PSDB                   NaN
15                partyfav_brazil_PP                   NaN
16                partyfav_brazil_PT                   NaN
17                                                     NaN
18              partyfav_brazil_PT_1                   NaN
19              partyfav_brazil_PT_2                   NaN
20              partyfav_brazil_PT_3                   NaN
21              partyfav_brazil_PT_4                   NaN
22              partyfav_brazil_PT_8                   NaN
23              partyfav_brazil_PT_9                   NaN

Теперь это хорошо, для данныхэто имеет 1 ссылочный код и X количество значений. Некоторые точки данных имеют 4 ссылочных кода, связанных с X количеством значений.Моя цель - добиться чего-то подобного, сохраняя при этом целостность переводов (не обращая внимания на NaN - представьте, что там есть какие-то данные):

                      REFERENCE_CODE           translation
0                      partyfav_batt                   xyz
1                party_fav_Cambiemos                   yxz
3       partyfav_argentina_Peronismo                   zyx
4                                                      NaN
5                    partyfav_batt_1                   a
6                    partyfav_batt_2                   b
7                    partyfav_batt_3                   c
8                    partyfav_batt_4                   d
9                    partyfav_batt_8                   e
10                   partyfav_batt_9                   f
5              party_fav_Cambiemos_1                   a
6              party_fav_Cambiemos_2                   b
7              party_fav_Cambiemos_3                   c
8              party_fav_Cambiemos_4                   d
9              party_fav_Cambiemos_8                   e
10             party_fav_Cambiemos_9                   f
5     partyfav_argentina_Peronismo_1                   a
6     partyfav_argentina_Peronismo_2                   b
7     partyfav_argentina_Peronismo_3                   c
8     partyfav_argentina_Peronismo_4                   d
9     partyfav_argentina_Peronismo_8                   e
10    partyfav_argentina_Peronismo_9                   f

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

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