簡體   English   中英

如何過濾dataframe中的多列?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM