
在 Pandas 中根据列值选择行
在 Pandas 中,过滤 DataFrame 以根据列值选择特定行可以使用比较运算符和布尔索引。
比较列值
选择行如果列值与特定标量值匹配,请使用 == 运算符:
1 | df.loc[df[ 'column_name' ] == some_value]
|
登录后复制
要选择列值位于列表或其他可迭代值中的行,请使用 isin 运算符:
1 | df.loc[df[ 'column_name' ].isin(some_values)]
|
登录后复制
组合条件
可以使用&运算符组合多个条件来选择满足所有条件的行条件:
1 | df.loc[(df[ 'column_name' ] >= A) & (df[ 'column_name' ] <= B)]
|
登录后复制
请注意,括号是确保正确的运算符优先级所必需的。
否定条件
选择与特定值不匹配或不在其中的行特定列表,使用 != 或 ~:
1 2 | df.loc[df[ 'column_name' ] != some_value]
df = df.loc[~df[ 'column_name' ].isin(some_values)] # In-place replacement requires `loc`
|
登录后复制
索引来否定条件优化
为了对常用条件进行有效过滤,在列上创建索引可能会很有帮助。这允许使用 df.loc 进行更快的查找:
1 2 | df = df.set_index([ 'B' ])
df.loc[ 'one' ]
|
登录后复制
示例
考虑以下 DataFrame:
1 2 3 | df = pd.DataFrame({ 'A' : [ 'foo' , 'bar' , 'foo' , 'bar' , 'foo' , 'bar' , 'foo' , 'foo' ],
'B' : [ 'one' , 'one' , 'two' , 'three' , 'two' , 'two' , 'one' , 'three' ],
'C' : np.arange(8), 'D' : np.arange(8) * 2})
|
登录后复制
选择列 'A' 等于 ' 的行foo':
1 | print (df.loc[df[ 'A' ] == 'foo' ])
|
登录后复制
选择列“B”所在的行['一', '三']:
1 | print (df.loc[df[ 'B' ].isin([ 'one' , 'three' ])])
|
登录后复制
要选择“B”列为“一”或“二”的行:
1 2 | df = df.set_index([ 'B' ])
print (df.loc[df.index.isin([ 'one' , 'two' ])])
|
登录后复制
以上是如何根据列值选择 Pandas DataFrame 中的特定行?的详细内容。更多信息请关注PHP中文网其他相关文章!