Pandas 中如何获取特定列满足给定条件的所有行的索引

Suraj Joshi 2023年1月30日 2020年6月9日
  1. 简单的索引操作可获取 Pandas 中特定列满足给定条件的所有行的索引
  2. np.where() 方法获取特定列满足给定条件的所有行的索引
  3. pandas.DataFrame.query() 获取特定列满足给定条件的所有行的索引
Pandas 中如何获取特定列满足给定条件的所有行的索引

我们可以使用简单的索引操作获得特定列满足给定条件的所有行的索引。我们还可以使用 NumPy 包中的 where() 方法和 DataFrame 对象的 query() 方法找到它们的索引。

简单的索引操作可获取 Pandas 中特定列满足给定条件的所有行的索引

使用简单的索引操作可以完成获取特定列满足给定条件的行的索引的任务。

import pandas as pd
import numpy as np

dates=['April-10', 'April-11', 'April-12', 'April-13','April-14','April-16']
sales=[200,300,400,200,300,300]
prices=[3, 1, 2, 4,3,2]

df = pd.DataFrame({'Date':dates ,
                   'Sales':sales ,
                   'Price': prices})

reqd_Index = df[df['Sales']>=300].index.tolist()
print(reqd_Index)

输出:

[1, 2, 4, 5]

这里,df['Sales']>=300 给出一系列布尔值,如果其 Sales 列的值大于或等于 300,则其元素为 True。

我们可以通过使用 df[df['Sales']>=300].index 来检索销售值大于或等于 300 的行的索引。

最后,tolist() 方法将所有索引转换为列表。

np.where() 方法获取特定列满足给定条件的所有行的索引

np.where() 将条件作为输入,并返回满足给定条件的元素的索引。因此,我们可以使用 np.where() 来获取特定列满足给定条件的所有行的索引。

import pandas as pd
import numpy as np

dates=['April-10', 'April-11', 'April-12', 'April-13','April-14','April-16']
sales=[200,300,400,200,300,300]
prices=[3, 1, 2, 4,3,2]

df = pd.DataFrame({'Date':dates ,
                   'Sales':sales ,
                   'Price': prices})

reqd_Index = list(np.where(df["Sales"] >= 300))
print(reqd_Index)

输出:

[array([1, 2, 4, 5])]

这将输出 Sales 列中的值大于或等于 300 的所有行的索引。

pandas.DataFrame.query() 获取特定列满足给定条件的所有行的索引

pandas.DataFrame.query() 返回由提供的查询表达式产生的 DataFrame。现在,我们可以使用 DataFrame 的 index 属性返回其特定列满足给定条件的所有行的索引。

import pandas as pd
import numpy as np

dates=['April-10', 'April-11', 'April-12', 'April-13','April-14','April-16']
sales=[200,300,400,200,300,300]
prices=[3, 1, 2, 4,3,2]

df = pd.DataFrame({'Date':dates ,
                   'Sales':sales ,
                   'Price': prices})

reqd_index = df.query('Sales == 300').index.tolist()
print(reqd_index)

输出:

[1, 4, 5]

它返回特定列满足给定条件 Sales == 300 的所有行的索引列表。

Author: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

相关文章 - Pandas DataFrame

相关文章 - Pandas DataFrame Row

相关文章 - Pandas DataFrame Column