gpt4 book ai didi

python - 从未出现一定次数的数据框中删除用户名?

转载 作者:太空宇宙 更新时间:2023-11-04 00:35:16 24 4
gpt4 key购买 nike

我正在尝试理解下面提供的内容(这是我在网上找到的,但并不完全理解)。我想从本质上删除至少 4 次未出现在我的数据框中的用户名(除了删除这些名称外,我不想以任何其他方式修改数据框)。下面的代码是否解决了这个问题?如果是的话,你能解释一下过滤器与 lambda 结合是如何实现的吗?我有以下内容:

df.groupby('userName').filter(lambda x: len(x) > 4)

我也愿意接受易于理解的替代解决方案/方法。

最佳答案

可以查看filtration .

在更大的 DataFrame 中更快的解决方案是使用 transformboolean indexing :

df[df.groupby('userName')['userName'].transform('size') > 4]

示例:

df = pd.DataFrame({'userName':['a'] * 5 + ['b'] * 3 + ['c'] * 6})

print (df.groupby('userName').filter(lambda x: len(x) > 4))
userName
0 a
1 a
2 a
3 a
4 a
8 c
9 c
10 c
11 c
12 c
13 c

print (df[df.groupby('userName')['userName'].transform('size') > 4])
userName
0 a
1 a
2 a
3 a
4 a
8 c
9 c
10 c
11 c
12 c
13 c

时间:

np.random.seed(123)
N = 1000000
L = np.random.randint(1000,size=N).astype(str)
df = pd.DataFrame({'userName': np.random.choice(L, N)})
print (df)

In [128]: %timeit (df.groupby('userName').filter(lambda x: len(x) > 1000))
1 loop, best of 3: 468 ms per loop

In [129]: %timeit (df[df.groupby('userName')['userName'].transform(len) > 1000])
1 loop, best of 3: 661 ms per loop

In [130]: %timeit (df[df.groupby('userName')['userName'].transform('size') > 1000])
10 loops, best of 3: 96.9 ms per loop

关于python - 从未出现一定次数的数据框中删除用户名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44322361/

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