程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python | Pandas | 篩選

編輯:Python

本文主要介紹如何使用 Pandas 對值進行篩選 1
Updated: 2022 / 6 / 21

Python | Pandas | 篩選

  • 表達式
    • 其他函數
      • isin
        • 1.
        • 2.
      • isna/notna
        • 1.
        • 2.
  • query
    • 運算符
    • 表達式
    • 空值
      • isna / isnull
      • notna / notnull
  • 參考鏈接


表達式

其他函數

isin

參考此處 2

1.

  • 應用場景:
    一個list中存了很多個值,需要提取出在這個列表中出現的值在目標 Dataframe 中的所有行
  • 方法:
X = data[data['X'].isin(['A', 'B', 'C', 'D'])]
# Unamed:22 Unamed:23
# 561 NaN NaN NaN 
# ... ... ... ...
# 1071 7.7 70805 NaN
# 1072 8.0 80851 NaN
# 
# type(X)
# <class 'pandas.core.frame.DataFrame'>
#
# X.dtype
# AttributeError: 'DataFrame' object has no attribute 'dtype' 
X = data.loc[data['X'].isin(['A', 'B', 'C', 'D'])]

2.

  • 應用場景:
    一個list中存了很多個值,需要判斷在這個列表中出現的值是否在目標 Dataframe 中的所有行
  • 方法:
X = data['X'].isin(['A', 'B', 'C', 'D'])
# 0 True
# 1 False
# ...
# 1076 True
# 1077 False
# 
# type(X)
# <class 'pandas.core.series.Series'>
# 
# X.dtype
# bool

isna/notna

參考此處 3

1.

  • 應用場景:
    選擇列值為null/None/nan的行
  • 方法:
X = df[df[2].isna()]
# 0 NaN
# 1 NaN
# ... ...
# 105 NaN
# 106 NaN
#
# type(X)
# <class 'pandas.core.series.Series'>
# 
# X[2].dtype
# object

2.

  • 應用場景:
    選擇列值不為null/None/nan的行
  • 方法:
df[df[2].notna()]
# 1869 ABCD
# 10712 EFGH
# ... ...
# 10723 IJK
# 10766 LMN
#
# type(X)
# <class 'pandas.core.series.Series'>
# 
# X[2].dtype
# object

query

關於更多內容,可查看 df.query 數據查詢的方法詳細介紹 4

運算符

df.query('Q1 > Q2 > 90') # 直接寫類型 sql where 語句
df.query('Q1 + Q2 > 180')
df.query('Q1 == Q2')
df.query('(Q1<50) & (Q2>40) and (Q3>90)')
df.query('Q1 > Q2 > Q3 > Q4')

表達式

df.query('team != "C"')
df.query('team in ["A","B"]')
df.query('team not in ("E","A","B")')
df.query('team == ["A","B"]')
df.query('team != ["A","B"]')
df.query('name.str.contains("am")') # 包含 am 字符

空值

參考此處 5

isna / isnull

df.query('col1.isnull()', engine='python')
# col1
# 21 NaN
# 42 NaN
# ...
# 60 NaN

notna / notnull

df.query('col1.notnull()', engine='python')
# col1
# 31 ABCD
# 32 EFGH
# ...
# 65 HIJK
# 對於名稱中帶有空格的列,可以使用反引號引起來
df.query('B == `team name`')
# 支持傳入變量,如:大於平均分40分的
a = df.Q1.mean()
df.query('Q1 > @a+40')
df.query('Q1 > `Q2`[email protected]')
# df.eval() 用法與 df.query 類似
df[df.eval("Q1 > 90 > Q3 > 10")]
df[df.eval("Q1 > `Q2`[email protected]")]

參考鏈接


  1. pandas 查詢篩選數據︎

  2. pandas通過list篩選行︎

  3. 【pandas】dataframe根據某列是否是null篩選數據︎

  4. pandas query() 表達式查詢︎

  5. Querying for NaN and other names in Pandas︎


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved