gpt4 book ai didi

python-3.x - 如何通过组的模式填充pandas中的na

转载 作者:行者123 更新时间:2023-12-04 08:54:01 25 4
gpt4 key购买 nike

我有一个像这样的 Pandas 数据框:

  df = 

a b
a1 b1
a1 b2
a1 b1
a1 Nan
a2 b1
a2 b2
a2 b2
a2 Nan
a2 b2
a3 Nan
对于 a 的每个值, b可以有多个 b 的值与之对应。我要填满 nan b 的值模式为 ba 的对应值分组的值.
生成的数据框应如下所示:
  df = 

a b
a1 b1
a1 b2
a1 b1
a1 ***b1***
a2 b1
a2 b2
a2 b2
a2 **b2**
a2 b2
a3 b2
以上 b1b 的模式对应于 a1 .同样, b2是对应于 a2 的模式.最后a3没有数据,所以用全局模式填充 b2 .
对于 b 列的每个 nan 值,我想用 b 列的值的众数填充它,但是,对于 a 的特定值,无论众数是什么。
编辑:
如果有群 a没有关于 b 的数据,然后通过全局模式填充它。

最佳答案

尝试:

# lazy grouping
groups = df.groupby('a')

# where all the rows within a group is NaN
all_na = groups['b'].transform(lambda x: x.isna().all())

# fill global mode
df.loc[all_na, 'b'] = df['b'].mode()[0]

# fill with local mode
mode_by_group = groups['b'].transform(lambda x: x.mode()[0])
df['b'] = df['b'].fillna(mod_by_group)

关于python-3.x - 如何通过组的模式填充pandas中的na,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63944973/

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