gpt4 book ai didi

python - 合并 Dataframe 行以填充缺失数据

转载 作者:太空宇宙 更新时间:2023-11-04 01:51:03 25 4
gpt4 key购买 nike

假设我有一个数据框,其中的行包含缺失数据,但一组列充当键:

import pandas as pd
import numpy as np
data = {"id": [1, 1, 2, 2, 3, 3, 4 ,4], "name": ["John", "John", "Paul", "Paul", "Ringo", "Ringo", "George", "George"], "height": [178, np.nan, 182, np.nan, 175, np.nan, 188, np.nan], "weight": [np.nan, np.NaN, np.nan, 72, np.nan, 68, np.nan, 70]}

df = pd.DataFrame.from_dict(data)
print(df)


id name height weight
0 1 John 178.0 NaN
1 1 John NaN NaN
2 2 Paul 182.0 NaN
3 2 Paul NaN 72.0
4 3 Ringo 175.0 NaN
5 3 Ringo NaN 68.0
6 4 George 188.0 NaN
7 4 George NaN 70.0

我将如何使用重复键“压缩”这些行以选择非 nan 值(如果存在)?

desired output:
id name height weight
0 1 John 178.0 NaN
2 2 Paul 182.0 72.0
4 3 Ringo 175.0 68.0
6 4 George 188.0 70.0

索引无关紧要,并且总是最多只有一行包含非 NaN 数据。我想我需要使用 groupby(['id', 'name']),但我不确定从那里去哪里。

最佳答案

如果每组总是只有一个非 NaN 值,则可以通过多种方式聚合:

df = df.groupby(['id', 'name'], as_index=False).first()

或者:

df = df.groupby(['id', 'name'], as_index=False).last()

或者:

df = df.groupby(['id', 'name'], as_index=False).mean()

或者:

df = df.groupby(['id', 'name'], as_index=False).sum(min_count=1)

关于python - 合并 Dataframe 行以填充缺失数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58024490/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com