[英]How to filter multiple columns in a dataframe?
我正在嘗試使用數組指定的條件按列過濾 dataframe。
考慮具有 2 列的 dataframe。
index A B
1 100 200
2 110 210
3 120 220
和一個二維數組,指定我們要為每一列過濾的值的范圍。
(array([105, 115]), array([205, 215]))
通常,如果我們要過濾列,我們會這樣做:
df = df[df['A']<115 & df['A']>105]
df = df[df['B']<215 & df['B']>205]
如果我有 100 列而不使用循環,是否有一種有效的方法來執行此操作?
有時候用for循環也不錯,這里我們嘗試concat
between
的結果
newdf = df[pd.concat([df[y].between(*x) for x , y in zip(l, df.columns)],axis=1).all(1)]
Out[52]:
A B
1 110 210
怎么樣
arr = (np.array([105, 115]), np.array([205, 215]))
df[df['A'].between(arr[0][0], arr[0][1]) & df['B'].between(arr[1][0], arr[1][1])]
index A B
2 110 210
我們可以將查詢字符串傳遞給query
方法:
search_box = np.array([[105, 115], [205, 215]]) # 2D array
search_box
array([[105, 115],
[205, 215]])
# query string
query = " and ".join(f"{first} < {column} < {last}"
for column, (first, last) in
zip(df.columns, search_box))
# pass it to query method :
df.query(query)
A B
1 110 210
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.