在Pandas 中,根據特定值對DataFrame 進行子集化非常簡單,如以下範例所示:
import pandas as pd # Dataframe initialization df = pd.DataFrame({'A': [5, 6, 3, 4], 'B': [1, 2, 3, 5]}) # Subset based on a single value x = df[df['A'] == 3]
但是,在選擇與值清單相符的行時會出現挑戰。考慮以下用例:
# List of values to filter on list_of_values = [3, 6] # Subset attempt (incorrect syntax) y = df[df['A'] in list_of_values]
此語法將導致錯誤,因為 Pandas 需要稍微不同的語法來基於多個值進行子集。
基於值列表對 DataFrame 進行子集化的正確方法是使用 isin() 方法。以下是修正後的程式碼:
y = df[df['A'].isin(list_of_values)]
輸出:
A B 1 6 2 2 3 3
isin() 方法採用值清單或陣列作為輸入,並傳回包含指定列符合的行的DataFrame輸入中的任何值。
選擇列值不符的行提供的清單中,您可以將 ~ 運算子與 isin() 結合使用。例如:
# Inverse subset z = df[~df['A'].isin(list_of_values)]
輸出:
A B 0 5 1 3 4 5
以上是如何根據多個值對 Pandas DataFrame 進行子集化?的詳細內容。更多資訊請關注PHP中文網其他相關文章!