gpt4 book ai didi

python - 如何使用不同的条件填充缺失值

转载 作者:行者123 更新时间:2023-12-03 20:23:10 25 4
gpt4 key购买 nike

假设我们有以下数据框。我想按列主题和以下条件填充列高度组的空值。

  • 如果 Subject 中有一个缺失值,则用另一个值填充该 Subject 的缺失值。
  • 如果一个 Subject 中有两个缺失值,则使用 x == 'AA'
  • 的所有受试者的高度中位数来填充这些缺失值。

    注意:在所需的数据框中,每个主题必须具有相同的值。
    df = pd.DataFrame({'Subject': [1,1,2,2,3,3], 'x':['AA','AA','BB','BB','AA','AA'], 'height': [130, np.nan, np.nan, 170, np.nan, np.nan]})

    enter image description here
    这是所需的数据框。
    enter image description here

    最佳答案

    您可以先fillna()使用分组 ffill()bfill() ,然后使用列 median :

    df.groupby('Subject')['height'].fillna(method='ffill',inplace=True).fillna(method='bfill',inplace=True)
    df['height'].fillna(df['height'].median(),inplace=True)
    输出 :
       Subject   x  height
    0 1 AA 130.0
    1 1 AA 130.0
    2 2 BB 170.0
    3 2 BB 170.0
    4 3 AA 150.0
    5 3 AA 150.0
    编辑 :如果您要求中位数应采用等于缺失值的 x 值的值,而不是整个数据集,您可以使用@xicoaio 的建议并替换我的第二行 df['height'].fillna(df['height'].median(),inplace=True) , 和:
    df['height'] = df.apply(lambda x: x['height'] if x['height'] == np.nan else df[df['x'] == x['x']]['height'].median() , axis=1)
    输出 :
       Subject   x  height
    0 1 AA 130.0
    1 1 AA 130.0
    2 2 BB 170.0
    3 2 BB 170.0
    4 3 AA 130.0
    5 3 AA 130.0

    关于python - 如何使用不同的条件填充缺失值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66875735/

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