我有一个pandas.DataFrame
,如下所示:
print(df)
level type
'xyz' 1
'abc' 2
'abc' 4
'abc' 3
'xyz' 3
'qwe' 2
'asd' 5
'poi' 1
我想用新值level
替换值计数小于2的others
列中的所有值。
print(df['level'].value_counts())
abc 3
xyz 2
poi 1
qwe 1
asd 1
在上面的示例中,计数为1(即qwe, asd, poi
的类别应替换为others
预期输出:
level type
0 xyz 1
1 abc 2
2 abc 4
3 abc 3
4 xyz 3
5 others 2
6 others 5
7 others 1
我尝试过的事情
cats = []
x = dict(df['level'].value_counts())
for k,v in x.items():
if v > 1:
cats.append(k)
df['level'] = [j if j in cats else 'others' for i,j in df['level'].iteritems()]
上面的代码生成预期的输出,但速度太慢。所以我在找 以获得更有效的解决方案。
答案 0 :(得分:1)