Панды группового для не пропущенных значений - PullRequest
0 голосов
/ 23 мая 2018

У меня есть df как это.

>>> df
    c1  t1      c2
0  NaN  20     xyz
1  NaN  20  x1y1z1
2  NaN  20     NaN
>>> df.groupby(['t1'], as_index=False).agg(lambda x: ';'.join(x.astype(str)))
  t1           c1              c2
0  20  nan;nan;nan  xyz;x1y1z1;nan

Но я не хочу объединять значения столбцов, если это np.nan

desired o/p

   t1         c1              c2
0  20        NaN        xyz;x1y1z1

Как эту проверку можно сделать здесь?

Спасибо

1 Ответ

0 голосов
/ 24 мая 2018

Вы можете попробовать использовать dropna:

df.groupby('t1', as_index=False)\
  .agg(lambda x: ';'.join(x.dropna().astype(str)))\
  .replace('',np.nan)

Вывод:

   t1  c1          c2
0  20 NaN  xyz;x1y1z1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...