gpt4 book ai didi

python - 如何以更快的方式从数据框中删除一系列行

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

我有一个数据集,我想用更快的方法删除一些行。我尝试过以下代码,但花了很长时间

我想删除每个操作次数少于 3 次的用户。

每个操作都存储在一行中,其中user_id不是我的数据的ID

undesirable_users=[] 
for i in range(len(operations_per_user)):
if operations_per_user.get_value(operations_per_user.index[i])<=3:
undesirable_users.append(operations_per_user.index[i])

for i in range(len(undesirable_users)):
data = data.drop(data[data.user_id == undesirable_users[i]].index)

data 是一个数据帧,operation_per_user 是由以下方法创建的一系列:operation_per_user = data['user_id'].value_counts()

最佳答案

为什么不直接过滤它们呢?您根本不需要循环。

您可以通过以下方式获取过滤后的索引:

operations_per_user.index[operations_per_user <= 3]

然后你可以从 df 中过滤这些索引,得到解决方案:

data = data[data['user_id'] not in (operations_per_user.index[operations_per_user <= 3])]

编辑

我的理解是,您想要删除数据中出现次数少于 3 次的任何用户。您不需要为此创建 value_counts 列表,您可以执行 groupby 并查找计数,然后在此基础上进行过滤。

filtered_user_ids = data.groupby('user_id').filter(lambda x: len(x) <= 3)['user_id'].tolist()

data = data[~data[user_id].isin(filtered_user_ids)]

关于python - 如何以更快的方式从数据框中删除一系列行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55961195/

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