gpt4 book ai didi

python - 如果计数小于 pandas 中的阈值,则填充默认值

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

我有一个数据框:

import pandas as pd
import numpy as np

df = pd.DataFrame()
df['name'] = ['john','sam','john','john','dean','dean','maggi',
'ram','maggi','ana','sam','sam']
df['pt'] = [23, 32, 45, 65, 65, 45, 32, 45, 90, 10, 32, 22]

如果名称在名称列中只出现一次,我想用其他名称替换名称。

所以我的输出是:

     name  pt
0 john 23
1 sam 32
2 john 45
3 john 65
4 dean 65
5 dean 45
6 maggi 32
7 other 45
8 maggi 90
9 other 10
10 sam 32
11 sam 22

在我的原始数据中,值以数百为单位,因此使用df.replacemap 不可行。

np.where 仅适用于二进制列。所以我被困在这里。

谢谢,

最佳答案

使用numpy.whereduplicated选择所有唯一行或使用 transform使用 size 指定阈值的更通用的解决方案:

df['name'] = np.where(~df['name'].duplicated(keep=False), 'other', df['name'])

或者:

df['name'] = np.where(df.groupby('name')['name'].transform('size') == 1, 'other', df['name'])
print (df)
name pt
0 john 23
1 sam 32
2 john 45
3 john 65
4 dean 65
5 dean 45
6 maggi 32
7 other 45
8 maggi 90
9 other 10
10 sam 32
11 sam 22

另一种解决方案,感谢@Jon Clements:

df.name.where(df.groupby('name')['name'].transform('size') > 1, 'other', inplace=True)

关于python - 如果计数小于 pandas 中的阈值,则填充默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51281265/

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