Объединить NaN строки в pandas без потери значений ячеек - PullRequest
2 голосов
/ 04 марта 2020

У меня есть датафрейм, похожий на этот

status  time  text
  1     12:25 some text
  NaN   NaN   status 1 txt
  NaN   NaN   s1
  2     15:23 some text
  NaN   NaN   status 2 txt
  NaN   NaN   s2

, и я хочу объединить строки по статусу, но я не хочу терять текстовые ячейки, что-то вроде этого.

status  time  text
1       12:25 some text status 1 txt s1
2       15:23 some text status 2 txt s2

Я уже пробовал группировать по статусу, как это, но я теряю текстовые ячейки.

df = df.groupby("status")[["time", "text"]].first().reset_index()

1 Ответ

3 голосов
/ 04 марта 2020

Попробуйте:

df["grp"]=(~df.status.isna()|~df.time.isna()).cumsum()
df=df.groupby("grp").agg({"status": "first", "time": "first", "text": " ".join})
#optionally:
#df=df.groupby("grp").agg({"status": "first", "time": "first", "text": " ".join}).reset_index(drop=True)

Выходы:

     status   time                       text
grp
1       1.0  12:25  some text status 1 txt s1
2       2.0  15:23  some text status 2 txt s2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...