如何在 Pandas DataFrame 行中搜索值?


Pandas DataFrame 是資料結構的一部分,用於以表格形式(行和列)表示二維結構。在 Python 中,我們有一些內建函式,如 eq()、any()、loc[] 和 apply(),可用於在 Pandas DataFrame 行中搜索值。例如,搜尋值由任何特定資料的可用性定義。

語法

以下語法在示例中使用:

DataFrame()

這是 Python 中的內建函式,它遵循 pandas 模組並將二維行和列顯示在一個框架中。

eq()

Python 中的此 eq 方法可用於比較 Pandas DataFrame 中的每個值,以檢查它是否等於已識別的值。

any()

這也是 Python 中的內建函式,如果任何可迭代元素或專案進行迭代則返回 true,否則返回 false。

loc[]

上述方法透過將特定的行和列返回到 DataFrame 來表示。

apply()

這是 Python 中的內建函式,其作用類似於 map() 函式。如果使用者使用表格資料,它提供引數 axis = 1(行)或 0(列)。

示例 1

在以下示例中,我們將展示**如何在 DataFrame 的特定列中搜索值**。首先,匯入 pandas 模組並將引用物件作為 pd。然後建立一個名為 data 的變數,並使用字典儲存資料。然後使用內建方法 DataFrame,該方法接受名為 data 的引數以表徵表格形式的二維結構。接下來,設定列的任何值(例如 siddhu)並將其儲存在變數 search_value 中。繼續使用列表技術並檢查名為 Name 的列是否等效於 search_value,然後它將返回特定資料。所有這些過程都儲存在變數 result 中。最後,僅使用名為 result 的變數並獲取所需的結果。

import pandas as pd
# Create a DataFrame
data = {'Name': ['Bhavish', 'Abhinabh', 'Siddhu'],
   'Age': [25, 32, 28]}
df = pd.DataFrame(data)

# Search for a value in the 'Name' column
search_value = 'Siddhu'
result = df[df['Name'] == search_value]
result

輸出

示例 2

在以下示例中,我們將展示**如何根據條件在特定行中搜索值**。透過匯入 pandas 模組並將引用作為 pd 來開始程式。然後使用字典建立列和行資料。接下來,使用資料框設定資料的表格結構並將其儲存在變數 df 中。然後從給定的行中選擇任何值(例如“F”)並將其儲存在變數 search_value 中。現在初始化變數 result 並存儲以使用兩個帶有 df 變數的方法,即 eq()[接受 search_value 作為引數以查詢給定的搜尋] 和 any(axis=1)[它將迭代所有行以查詢特定的搜尋]。最後,使用變數 result 並獲取結果。

import pandas as pd
# Create a DataFrame using a dictionary
data = {'Name': ['A', 'X', 'C', 'F', 'L', 'G'],
   'Age': [25, 32, 18, 29, 13, 19]}
df = pd.DataFrame(data)

# Search for a value across all columns
search_value = 'F'
result = df[df.eq(search_value).any(axis=1)]
result

輸出

示例 3

在以下示例中,我們將展示**如何使用 loc[] 屬性在行中搜索多個值**。這裡,它使用 .loc[] 屬性,該屬性透過提供 search_value 返回特定的行。loc 屬性使用兩個引數 - 切片(:) 和字典(鍵值對),這將有助於搜尋特定的行。除了 loc 之外,它還使用了 eq() 和 any() 兩種方法來獲得所需的輸出。

import pandas as pd
# Create a DataFrame
data = {'Name': ['Shyam', 'Ranjan', 'Mohan', 'Raju', 'Dheeraj'],
   'Age': [25, 32, 18, 22, 26],
   'Designation': ['SDE', 'Tester', 'Web Devloper', 'Intern', 'HR'],
   'Salary': [50000, 17000, 26000, 20000, 17000]}
df = pd.DataFrame(data)

# Search for a value within a range of columns
search_value = 17000
ans = df.loc[df.loc[:, 'Age':'Salary'].eq(search_value).any(axis=1)]
ans

輸出

示例 4

在以下示例中,我們將展示**如何使用 apply() 和 lambda 在所有行中搜索值**。這裡它使用 apply() 函式以及 lambda 函式來迭代每一行並檢查搜尋值是否出現在該行的值中:df.apply(lambda row: search_value in row.values, axis=1)。然後使用 any() 函式檢查搜尋值是否在至少一行中找到。

import pandas as pd
# Create of simple DataFrame
data = {"Name": ["Keshav", "Vishal", "Aman", "Shubham", "Amar"],
   "Age": [23, 22, 24, 26, 21]}
df = pd.DataFrame(data)

# Search for the value 22 in all rows using apply() and lambda
search_value = 22
if df.apply(lambda row: search_value in row.values, axis=1).any():
   print(f"{search_value} found in at least one row")
else:
   print(f"{search_value} not found in any row")

輸出

22 found in at least one row

結論

我們討論了在 Pandas DataFrame 行中搜索值的各種方法。我們看到了幾個內建函式,這些函式有助於從給定資料中搜索特定的行。各個領域在其 ML 程式(如資料科學和資料分析)中使用這種型別的模組。

更新於:2023-07-17

3K+ 次檢視

開啟您的 職業生涯

透過完成課程獲得認證

立即開始
廣告

© . All rights reserved.