У меня есть интересный вопрос, для которого у меня нет встроенного решения в Pandas.
У меня есть такие данные:
A B C D E F
1 null null Red null 12
1 89 76 Red null null
1 null null null null 12
Я пытаюсь получить вывод, например:
1 89 76 Red null 12
Теперь эти данные представляют собой сообщения, приходящие в разное время. Многие сообщения относятся к одной транзакции.
Итак, предположим, что A является идентификатором транзакции. Некоторые сообщения с одинаковым идентификатором имеют значение для столбца B, некоторые имеют значение для столбца C.
Итак, я хочу сгруппировать по уникальному идентификатору, а затем получить ненулевые значения для каждого столбца.
Итак, это задача группировки, а затем агрегирования. Но в отличие от count или подобных вещей, я действительно создаю новую строку.
Я не нахожу способ сделать это в pandas. Любая помощь приветствуется, спасибо!
Пример:>
A B C D
1 null null 100
1 90 null null
2 null 1000 999
1 80
2 1000 null 799
df.groupby('A').first()
B C D
A
1 null null 100
2 null 1000 999
Но требуемый результат:
B C D
A
1 90 80 100
2 1000 1000 999
df.groupby('A').first()
? Это может быть дубликат. - person cs95   schedule 05.06.2018df.replace('null', np.nan).groupby('A').first()
? - person jezrael   schedule 05.06.2018non-nans
значений, как в последнем столбце12, null, 15
? - person jezrael   schedule 05.06.2018df.groupby('A').first()
не работает? Почему? Я тестирую это и работает хорошо. - person jezrael   schedule 05.06.2018null
этоNaN
? - person jezrael   schedule 05.06.2018df.replace('null', np.nan).groupby('A').first()
- person jezrael   schedule 05.06.2018first
получают первые значения, отличные от nan, для каждой группы - person jezrael   schedule 05.06.2018df = df.groupby('A').apply(lambda x: x.bfill().ffill())
df.groupby('A').last()
- person Hernán Borré   schedule 24.04.2019