首页 >后端开发 >Python教程 >如何根据列值选择 Pandas DataFrame 中的特定行?

如何根据列值选择 Pandas DataFrame 中的特定行?

Susan Sarandon
Susan Sarandon原创
2024-12-26 13:20:10337浏览

How to Select Specific Rows in Pandas DataFrames Based on Column Values?

根据 Pandas DataFrame 中的列值选择行

使用 Pandas DataFrame 时,经常需要根据特定列中的特定值过滤行。这模仿了 SQL 查询,其中使用 WHERE column_name = some_value 等过滤器检索行。

标量值

要选择列值与标量值 some_value 匹配的行,请使用相等运算符 == :

df.loc[df['column_name'] == some_value]

可迭代值

选择行列值位于数组 some_values 中,使用 isin 方法:

df.loc[df['column_name'].isin(some_values)]

组合条件

可以使用逻辑 & 运算符组合多个条件:

df.loc[(df['column_name'] >= A) & (df['column_name'] <= B)]

注意: 使用括号确保运算符优先级正确。

求反

要选择列值不等于 some_value 的行,请使用不等运算符 !=:

df.loc[df['column_name'] != some_value]

对于 isin,请使用对结果取负~:

df = df.loc[~df['column_name'].isin(some_values)]

示例

考虑以下内容DataFrame:

import pandas as pd

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})
print(df)

选择 A 为 foo 的行:

print(df.loc[df['A'] == 'foo'])

选择 B 为 1 或 3 的行:

print(df.loc[df['B'].isin(['one', 'three'])])

创建索引并使用以下命令选择行它:

df = df.set_index(['B'])
print(df.loc['one'])

选择具有多个索引值的行:

print(df.loc[df.index.isin(['one', 'two'])])

以上是如何根据列值选择 Pandas DataFrame 中的特定行?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn