Skip to main content
 首页 » 编程设计

python之对 Pandas 数据框的多列进行条件过滤

2025年05月04日19zhoujg

我有一个包含三列的 pandas 数据框,A(日期)、B(分类值)和 C(实际值)。

A     |  B   |  C 
01-19 |  5   |  0.34 
01-19 |  3   |  0.25 
01-19 |  7   |  0.07 
01-20 |  5   |  0.15 
01-20 |  2   |  0.36 

等等。

我想要的是根据日期和特定阈值过滤行 - 类似于:

[(01-19, x<6), (01-20, x<3)]

在这种情况下会给我

A     |  B   |  C 
01-19 |  5   |  0.34 
01-19 |  3   |  0.25 
01-20 |  2   |  0.36 

我的解决方案是使用 A 和 B 设置多索引,但我不确定如何通过 B 进行过滤。

请您参考如下方法:

想法是为 A 列的所有值创建阈值字典,然后是 Series.map到新系列,因此可以按 B 列进行比较并按 boolean indexing 过滤:

d = {'01-19': 6, '01-20' : 3} 
df = df[df['B'] < df['A'].map(d)] 
print (df) 
       A  B     C 
0  01-19  5  0.34 
1  01-19  3  0.25 
4  01-20  2  0.36 

详细信息:

print (df['A'].map(d)) 
0    6 
1    6 
2    6 
3    3 
4    3 
Name: A, dtype: int64