本文主要介紹如何使用 Pandas
對值進行篩選 1。
Updated: 2022 / 6 / 21
參考此處 2
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'])]
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
參考此處 3
X = df[df[2].isna()]
# 0 NaN
# 1 NaN
# ... ...
# 105 NaN
# 106 NaN
#
# type(X)
# <class 'pandas.core.series.Series'>
#
# X[2].dtype
# object
df[df[2].notna()]
# 1869 ABCD
# 10712 EFGH
# ... ...
# 10723 IJK
# 10766 LMN
#
# type(X)
# <class 'pandas.core.series.Series'>
#
# X[2].dtype
# object
關於更多內容,可查看 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
df.query('col1.isnull()', engine='python')
# col1
# 21 NaN
# 42 NaN
# ...
# 60 NaN
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]")]
pandas 查詢篩選數據︎
pandas通過list篩選行︎
【pandas】dataframe根據某列是否是null篩選數據︎
pandas query() 表達式查詢︎
Querying for NaN and other names in Pandas︎