在 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中文网其他相关文章!