猿问

按相同值过滤列

我有一个示例数据框,我想根据相同的值过滤几列,但我想避免重复行来执行此操作:


df = df.loc[df['a'] == 7]

df = df.loc[df['b'] == 7]

我正在寻找一种更简洁的方式来编写此内容,因为我将有许多具有相同处理方式的列。这是我的尝试:


df = pd.DataFrame(np.array([[1, 2, 3], [4, 5, 6], [7, 7, 9]]), columns=['a', 'b', 'c']) 

my_cols = ['a','b']

print(df.loc[df[my_cols]==7])

但我收到以下错误:


无法使用多维键进行索引


有谁知道是否可以制作这种类型的过滤器?


梵蒂冈之花
浏览 102回答 1
1回答

PIPIONE

因为df[my_cols]==7return booleanDataFrame是必要的,所以添加DataFrame.any:print(df[(df[my_cols]==7).any(axis=1)])   a  b  c2  7  7  9print (df[my_cols]==7)       a      b0  False  False1  False  False2   True   True
随时随地看视频慕课网APP

相关分类

Python
我要回答