Допустим, у меня есть следующее pd.DataFrame
.
import pandas as pd
import numpy as np
data = {'number': [1, 1, 1, 2], 'q':[np.nan, 2, np.nan, 1], 'letter': ['alpha', 'beta', 'gamma', 'alpha']}
df = pd.DataFrame(data)
number q letter
0 1 NaN alpha
1 1 2.0 beta
2 1 NaN gamma
3 2 1.0 alpha
Что я хочу сделать, это агрегировать по числу и создать список со всеми буквами и применить фильтр на основе значенияq
.
Если я сделаю это:
df.groupby('number').agg({"letter": lambda w: list(w) })
даст:
letter
number
1 [alpha, beta, gamma]
2 [alpha]
Но я хочу включить только те столбцы, которые соответствуютq
значение не равно NaN
, т.е.
number letter
0 1 [beta]
1 2 [alpha]
Редактировать : я был бы признателен за более общее решение (не только если у нас есть NaN
значения), но если мыхотите указать значение q
в качестве порога того, что будет включено или нет.