gpt4 book ai didi

python - 填充 NAs : Min of values in group

转载 作者:行者123 更新时间:2023-12-05 09:00:41 25 4
gpt4 key购买 nike

这是我的 DataFrame。

df = pd.DataFrame ( {'CNN': ['iphone 11 63 GB TMO','iphone 11 128 GB ATT','iphone 11 other carrier','iphone 12 256 GB TMO','iphone 12 64 GB TMO','iphone 12 other carrier'], 
'Family Name':['iphone 11', 'iphone 11', 'iphone 11', 'iphone 12', 'iphone 12', 'iphone 12'],
'Storage': [63, 128,np.nan, 256,64, np.nan]})
Output:

CNN Family Name Storage
0 iphone 11 63 GB TMO iphone 11 63.0
1 iphone 11 128 GB ATT iphone 11 128.0
2 iphone 11 other carrier iphone 11 NaN
3 iphone 12 256 GB TMO iphone 12 256.0
4 iphone 12 64 GB TMO iphone 12 64.0
5 iphone 12 other carrier iphone 12 NaN

我想要实现的是找到 NA。标准是来自组(姓氏)的最小存储量。我尝试按 fillna(min()) 进行分组,但它似乎不起作用。

#Tried
df["Storage"] = df.groupby("Family Name").apply(lambda x: x.fillna(x.min()))

这是预期的最终输出。

Expected Output:

CNN Family Name Storage
0 iphone 11 63 GB TMO iphone 11 63.0
1 iphone 11 128 GB ATT iphone 11 128.0
2 iphone 11 other carrier iphone 11 63.0
3 iphone 12 256 GB TMO iphone 12 256.0
4 iphone 12 64 GB TMO iphone 12 64.0
5 iphone 12 other carrier iphone 12 64.0

最佳答案

使用groupby.transformfillna :

df['Storage'] = df['Storage'].fillna(df.groupby('Family Name')['Storage'].transform('min'))

或者,可能更有效,groupby.minmapboolean indexing取决于 DataFrame 的大小、NaN 的数量(很少)和组的数量:

s = df.groupby('Family Name')['Storage'].min()
m = df['Storage'].isna()
df.loc[m, 'Storage'] = df.loc[m, 'Family Name'].map(s)

输出:

                       CNN Family Name  Storage
0 iphone 11 63 GB TMO iphone 11 63.0
1 iphone 11 128 GB ATT iphone 11 128.0
2 iphone 11 other carrier iphone 11 63.0
3 iphone 12 256 GB TMO iphone 12 256.0
4 iphone 12 64 GB TMO iphone 12 64.0
5 iphone 12 other carrier iphone 12 64.0

关于python - 填充 NAs : Min of values in group,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75157090/

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