Pandas .agg() 转换为列表但跳过 nan

mic*_*-ko 5 aggregate nan dataframe python-3.x pandas

如何合并/减少 DataFrame,以便它按自定义列“id”合并行,并将值放入列表中(如果它们不是 Nan)。到目前为止,我想出了这个,但它并没有删除 Nans:

x: pd.DataFrame = df_chunk.groupby('id', dropna=True).agg(lambda x: list(x))
for row in x.itertuples():
    print(row)
Run Code Online (Sandbox Code Playgroud)

所以结果是:

Pandas(Index=1, surname=['Bruce', nan, nan], given_name=['Erin', nan, nan], date_of_birth=['11/03/1961', '11/04/1961', '11/06/1961'], address=['10 Kestrel Wood Way, York', '4 Ward Avenue, Cowes', '11 Woodhill Court, Woodside Road, Amersham'], postcode=['YO31 9EJ', 'BD10 0LT', 'WA14 1LH'], mobile=['+64 21 421 2300', '+64 29 975 1551', '+64 22 5491 7112'])
Run Code Online (Sandbox Code Playgroud)

期望的结果是 surname=['Bruce']、given_name=['Erin'] 等等

jez*_*ael 7

用于Series.dropna删除NaNs 和Nones:

df_chunk.groupby('id').agg(lambda x: list(x.dropna()))
Run Code Online (Sandbox Code Playgroud)