首頁 > 後端開發 > Python教學 > 如何根據列值從 Pandas DataFrame 中高效選擇資料?

如何根據列值從 Pandas DataFrame 中高效選擇資料?

Linda Hamilton
發布: 2024-12-24 01:24:11
原創
420 人瀏覽過

How to Efficiently Select Data from a Pandas DataFrame Based on Column Values?

如何根據列值從DataFrame 中選擇資料

在SQL 中,根據列值選擇行的典型查詢如下所示例如:

SELECT *
FROM table
WHERE column_name = some_value
登入後複製

要在Pandas中達到相同的結果,有幾種方法:

精確值匹配

要選擇列值等於特定值(some_value) 的行,請在.loc 中使用== 運算子:

df.loc[df['column_name'] == some_value]
登入後複製

價值包容與排除

要選擇列值包含在清單(some_values)中的行,請使用isin 函數:

df.loc[df['column_name'].isin(some_values)]
登入後複製

若要排除特定值,請對傳回的布林系列取反by isin:

df = df.loc[~df['column_name'].isin(some_values)] # Note: This is not an in-place operation
登入後複製

組合條件

可以使用& (AND) 和| 等邏輯運算子組合多重條件(OR):

df.loc[(df['column_name'] >= A) & (df['column_name'] <= B)]
登入後複製

請注意,括號是確保正確的運算子優先順序所必需的。

範例

考慮 DataFrame:

import pandas as pd
import numpy as np

df = pd.DataFrame({'A': 'foo bar foo bar foo bar foo foo'.split(),
                   'B': 'one one two three two two one three'.split(),
                   'C': np.arange(8), 'D': np.arange(8) * 2})
登入後複製

選擇「A」等於的行'foo':

print(df.loc[df['A'] == 'foo'])
登入後複製

產量:

     A      B  C  D
0  foo    one  0  0
2  foo    two  2  4
4  foo    two  4  8
6  foo    one  6  12
7  foo  three  7  14
登入後複製

多值選擇最佳化

多值選擇最佳化
df = df.set_index(['B'])
print(df.loc[df.index.isin(['one','two'])])
登入後複製

       A  C  D
B
one  foo  0  0
one  bar  1  2
one  foo  6  12
two  foo  2  4
two  foo  4  8
two  bar  5  10
登入後複製
多值選擇最佳化 對於基於多個值選擇行,它是建立索引並將.loc 與df.index.isin結合使用會更有效。這可以避免多次呼叫 isin,從而提高效能。 產量:

以上是如何根據列值從 Pandas DataFrame 中高效選擇資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板