gpt4 book ai didi

python - pandas:在(多索引)DataFrame上使用每个组中最常见的值执行 fillna() 的最佳方法是什么?

转载 作者:太空宇宙 更新时间:2023-11-03 15:46:36 24 4
gpt4 key购买 nike

有一个包含一些 NaN 值的 DataFrame:

df = pd.DataFrame({'A': [1, 1, 1, 1, 2, 2, 2, 2], 'B': [1, 1, np.NaN, 2, 3, np.NaN, 3, 4]})

A B
0 1 1.0
1 1 1.0
2 1 NaN <-
3 1 2.0
4 2 3.0
5 2 NaN <-
6 2 3.0
7 2 4.0

将标签“A”设置为索引:

df.set_index(['A'], inplace=True)

现在有两个组,索引分别为 1 和 2:

     B
A
1 1.0
1 1.0
1 NaN <-
1 2.0
2 3.0
2 NaN <-
2 3.0
2 4.0

使用每组中最频繁值对 DataFrame 执行 fillna() 的最佳方法是什么?

所以,我想做这样的调用:

df.B.fillna(df.groupby('A').B...)

并得到:

     B
A
1 1.0
1 1.0
1 1.0 <-
1 2.0
2 3.0
2 3.0 <-
2 3.0
2 4.0

我希望有一种方法,它也适用于多索引。

最佳答案

  • 按列 A 分组,并将 fillna() 应用于每个组内的 B;
  • 从系列中删除缺失值,然后执行 value_counts,使用 idxmax() 选取最常见的值;

假设不存在缺少所有值的组:

df['B'] = df.groupby('A')['B'].transform(lambda x: x.fillna(x.dropna().value_counts().idxmax()))
df

enter image description here

关于python - pandas:在(多索引)DataFrame上使用每个组中最常见的值执行 fillna() 的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41688695/

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