Строки объединяются при попытке показать первый экземпляр сгруппированных данных - PullRequest
1 голос
/ 02 мая 2019

Я пытаюсь показать первый ряд по группе (в данном случае, Car - это группа).Однако, когда я пытаюсь сделать это с данными ниже, мой код показывает 45 для времени Фреда (что на самом деле время Бетси из строки ниже).Я хотел бы, чтобы в выходных данных отображалась первая полная строка для автомобиля A и первая полная строка для автомобиля B, даже если в столбце времени указано np.nan.

Может ли кто-нибудь помочь мне понять, что я делаюнеправильно и почему мой код будет объединять информацию о строках, как это?

Спасибо!

import pandas as pd

test_df = pd.DataFrame({'Race':[1,1,1,2,2,2],'Car':['A','A','A','B','B','B'], 'Date':['5/1/2019','4/15/2019','3/1/2019','5/1/2019','2/1/2019','1/5/2019'],
                        'Driver':['Fred','Betsy','John','John','Frank','Frank'],'Time':[np.nan,45,46,47,44,43]})

test_df = test_df.sort_values(['Race', 'Car', 'Date'], ascending=[True, True, False]).groupby(['Car'], as_index=False).first()

Ответы [ 2 ]

0 голосов
/ 02 мая 2019

Используйте nth (0, dropna = False) вместо first ()

test_df = test_df.sort_values(['Race', 'Car', 'Date'], ascending=[True, True, False]).groupby(['Car'], as_index=False,).nth(0,dropna=False)

выход

    Race Car   Date    Driver   Time
0    1   A   5/1/2019  Fred     NaN
3    2   B   5/1/2019  John    47.0
0 голосов
/ 02 мая 2019

Используйте .head(1) вместо .first():

Выход:

   Race Car      Date Driver  Time
0     1   A  5/1/2019   Fred   NaN
3     2   B  5/1/2019   John  47.0

Разница между ними заключается в том, как обрабатывается NaN: ссылка .

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