Ali*_*inx 5 python filter dataframe pandas
我有一个关于如何从大型 df 中过滤和选择异常数据集的问题。例如,我有一个 df:
import pandas as pd
import numpy as np
data = {"code": ['a', 'a', 'a', 'b', 'b', 'c', 'c', 'c', 'd', 'd'],
"number": [7, 5, 2, 4, 6, 9, 6, 2, 8, 2]}
df = pd.DataFrame(data=data)
code number
0 a 7
1 a 5
2 a 2
3 b 4
4 b 6
5 c 9
6 c 6
7 c 2
8 d 8
9 d 2
Run Code Online (Sandbox Code Playgroud)
在这个 df 中,大部分数据都遵循这样一个规则,即在同一个“代码”组中,更大的数字出现在开头。例如,在'a'组中,它在dataframe中的值如下:7>5>2;在'c'组中,它的值如下:9>6>2,'d'组8>2中的相同模式。但只是不在'b'组中,因为4比6更小。所以我想过滤仅异常子集 b 并具有如下输出:
code number
0 b 4
1 b 6
Run Code Online (Sandbox Code Playgroud)
有人会有什么想法吗?非常感谢您的帮助。
我们可以filter这样做diff
df.groupby('code').filter(lambda x : (x.number.diff()>0).any())
code number
3 b 4
4 b 6
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
54 次 |
| 最近记录: |