Панды - игнорирование пустых значений при объединении сгруппированных строк - PullRequest
0 голосов
/ 18 марта 2019

Я пытаюсь сгруппировать фрейм данных на основе значения столбца и хочу объединить (объединить) значения в других столбцах.

Я делаю что-то вроде -

df_combined = df_combined.groupby('UC').agg({'LO Number': ', '.join,
                                             'K Code': ', '.join})

Но это дает мне nan значения, в которых столбцы K Code не имеют значений.Таким образом, результат выглядит как

K Code

K0016, K0068, nan, nan, A0046

nan, nan, nan

Как я могу избавиться от этих значений nan в столбце K Code?Кроме того, есть ли способ получить третий столбец с количеством значений в столбце K Code.Например,для вышеупомянутого

Count

3   

0

Редактировать: Пример данных -

UC      LO Number      K Code
C001     C001.1        K0068
C001     C001.2        K0372
C002     C002.1        
C002     C002.3        K0032
C002     C002.5          

Спасибо!:)

1 Ответ

0 голосов
/ 18 марта 2019

Вы можете попробовать использовать lambda с agg, однако это создаст кратный индекс

, поскольку у вас значение nan, замените перед запуском ниже

df=df.replace({'nan':np.nan})


df_combined.groupby('UC').agg({'LO Number': ', '.join,
                                             'K Code': [lambda x : ', '.join(y for y in x if y==y),'count']})

ЕслиВы не хотите многократный индекс

df_combined.assign(count=df_combined['K Code']).
         groupby('UC').agg({'LO Number': ', '.join,
                           'K Code': lambda x : ', '.join(y for y in x if y==y),
                            'count':'count'})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...