使用某些条件过滤数据
我有一个数据框
username score
1 0.0008
1 0.1
1 0.000009
2 0.2
2 0.0098
2 0.7
3 0.99
3 0.019
3 0.0001
我需要使用该条件进行过滤
d = {1: 0.05, 2: 0.01, 3: 0.02}
所以我需要为每个客户端提取所有小于 dict 值的值。
期望输出:
username score
1 0.0008
1 0.000009
2 0.0098
3 0.019
3 0.0001
如何快速过滤?我知道可以使用循环来做到这一点,但我有一个包含 100 多个用户名的庞大数据集。
回答
你可以map在username你的字典d,然后用布尔检索,只选择那些具有score lESSt汉映射结果:
df[df.score.lt(df.username.map(d))]
要得到
username score
0 1 0.000800
2 1 0.000009
4 2 0.009800
7 3 0.019000
8 3 0.000100