pandas 按两个条件(True和False)进行子集化,计算结果为(True)

tvz2xvvm  于 2022-12-21  发布在  其他
关注(0)|答案(1)|浏览(154)
import pandas as pd
d = {'col1':[1, 2, 3, 4, 5], 'col2':[5, 4, 3, 2, 1]}
df = pd.DataFrame(data=d)

df[(df['col1'] == 1) | (df['col1'] == df['col1'].max()) & (df['col1'] > 2)]

为什么不过滤掉第一行呢?这里col1小于2。
我得到了这个:

col1  col2
0     1     5
4     5     1

预期结果:

col1  col2
4     5     1
9bfwbjaz

9bfwbjaz1#

根据第一条评论(谢谢chepener!),这解决了这个问题:

df[((df['col1'] == 1) | (df['col1'] == df['col1'].max())) & (df['col1'] > 2)]

相关问题