dataframe.query() 篩選 tips

1、常規(guī)操作

要從一個(gè) dataframe 中,篩選出某些列值符合要求的行數(shù)據(jù),可以用類似以下的語(yǔ)句實(shí)現(xiàn):

df[df[col] == x]

也可以用 .query() 實(shí)現(xiàn):

df.query('col == x')
2、其他操作方法

1)篩選出 col 列中值不是 bool 類型的行

df.query('col not in (True, False)')

2)篩選出 col 列中值為 nan、None 的值

df = pd.DataFrame({"value": [3,4,9,10,11,np.nan,12]})

# 方法1
# 利用 'nan 不等于自身' 的性質(zhì),篩選出非 nan、None 的行
df.query("value == value')

# 方法2
# 類似的還有 isnull, notnull,isnan 等
df.query('value.notna()', engine='python')

# 方法3
df.query('value != 'NaN'")

以上結(jié)果都是

Out[28]: 
   value
0    3.0
1    4.0
2    9.0
3   10.0
4   11.0
6   12.0
# 篩選出不是 NaT 的行(提前使用外部函數(shù),超綱了哈)
df.query('col not in [@pd.NaT]')

3)在 query 中篩選時(shí)引用外部變量

# 1. 外部為普通變量
# 方法1
pi = 3.1415
df.query('value < 10 and value > @pi')

# 方法2
pi = 3.1415
df.query(f'value < 10 and value > {pi}')

# 2.外部變量為 list
cond = [4, 12]
df.query('@cond[0] < value < @cond[1]')

# 3.外部變量為 dict,注意中括號(hào)中不能有引號(hào),因此要取 dict 的值,需要用 dict.get() 的方式
cond = {'dn_band': 4, 'up_band': 12}
df.query("@cond.get('dn_band') < value < @cond.get('up_band')")

# 4.外部為函數(shù)
num = [2, 6] 
def func(x):
    return x * 2
df.query('@func(@num[0]) < value < @func(@num[1])')

以上的結(jié)果都是

Out[30]: 
   value
3   10.0
4   11.0

參考資料:
1、Querying for NaN and other names in Pandas

2、DataFrame的assign和query方法

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 寫了個(gè)程序,對(duì)Pandas的絕大部分函數(shù)及其說(shuō)明進(jìn)行了中文翻譯。原網(wǎng)址:http://pandas.pydata....
    TSIANG閱讀 5,865評(píng)論 0 4
  • 在python中,眾所周知,數(shù)據(jù)預(yù)處理最好用的包就是pandas了,以下是pandas里的dataframe數(shù)據(jù)結(jié)...
    天涯海角醉云游閱讀 31,636評(píng)論 1 12
  • 一、索引器 1、表的列索引 In [4]: df['Name'].head() #表示單純找到一列 2、序列的行索...
    辣白菜拉面閱讀 387評(píng)論 0 0
  • 原創(chuàng)文章:如有下載及轉(zhuǎn)載請(qǐng)注明來(lái)源鏈接,否則視為侵權(quán) (第一)------------------數(shù)據(jù)讀取相關(guān)方法...
    chfing閱讀 2,280評(píng)論 0 1
  • 推薦指數(shù): 6.0 書籍主旨關(guān)鍵詞:特權(quán)、焦點(diǎn)、注意力、語(yǔ)言聯(lián)想、情景聯(lián)想 觀點(diǎn): 1.統(tǒng)計(jì)學(xué)現(xiàn)在叫數(shù)據(jù)分析,社會(huì)...
    Jenaral閱讀 6,037評(píng)論 0 5

友情鏈接更多精彩內(nèi)容