df= pd.DataFrame([12,11,4,15,6,12,4,7],columns=['foo'])
foo
0 12
1 11
2 4
3 15
4 6
5 12
6 4
7 7
# make a dict with counts
count_dict = {d:(df['foo']==d).sum() for d in df.foo.unique()}
# assign that dict to a column
df['bar'] = [count_dict[d] for d in df.foo]
# loc in the 'pruned' tag
df.loc[df.bar < 2, 'foo']='pruned'
import pandas as pd
df= pd.DataFrame([12,11,4,15,6,12,4,7],columns=['foo'])
# make a dict with counts
count_dict = dict(df.foo.value_counts())
# assign that dict to a column
df['temp_count'] = [count_dict[d] for d in df.foo]
# loc in the 'pruned' tag
df.loc[df.temp_count < 2, 'foo']='pruned'
df = df.drop(["temp_count"], axis=1)
我怀疑有一种更有效的方法可以做到这一点,但简单的方法是构建一个计数dict,然后在这些值低于计数阈值时进行修剪。以
df
为例:按需返回:
(当然,如果需要,您可以将2改为5并转储
bar
列)。你知道吗更新
对于每个就地版本的请求,这里有一个一行程序,它可以在不指定另一列或直接创建dict的情况下完成(感谢@trumonaminima提供的
values_count()
提示):根据需要再次返回:
这是我最后使用的基于上述答案的解决方案。你知道吗
相关问题 更多 >
编程相关推荐