1. 程式人生 > >使用pandas篩選出指定列值所對應的行

使用pandas篩選出指定列值所對應的行

在pandas中怎麼樣實現類似mysql查詢語句的功能:

select * from table where column_name = some_value;

pandas中獲取資料的有以下幾種方法:

  • 布林索引
  • 位置索引
  • 標籤索引
  • 使用API

假設資料如下:

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})

布林索引

該方法其實就是找出每一行中符合條件的真值(true value),如找出列A中所有值等於foo

df[df['A'] == 'foo'] # 判斷等式是否成立

位置索引

使用iloc方法,根據索引的位置來查詢資料的。這個例子需要先找出符合條件的行所在位置

mask = df['A'] == 'foo'
pos = np.flatnonzero(mask)  # 返回的是array([0, 2, 4, 6, 7])
df.iloc[pos]

#常見的iloc用法
df.iloc[:3,1:3]

標籤索引

如何DataFrame的行列都是有標籤的,那麼使用loc方法就非常合適了。

df.set_index('A', append=True, drop=False).xs('foo', level=1) # xs方法適用於多重索引DataFrame的資料篩選

# 更直觀點的做法
df.index=df['A'] # 將A列作為DataFrame的行索引
df.loc['foo', :]

# 使用布林
df.loc[df['A']=='foo']

使用API

pd.DataFrame.query方法在資料量大的時候,效率比常規的方法更高效。

df.query('A=="foo"')

# 多條件
df.query('A=="foo" | A=="bar"')

資料提取不止前面提到的情況,第一個答案就給出了以下幾種常見情況:
1、篩選出列值等於標量的行,用==

df.loc[df['column_name'] == some_value]

2、篩選出列值屬於某個範圍內的行,用isin

df.loc[df['column_name'].isin(some_values)]  # some_values是可迭代物件

3、多種條件限制時使用&,&的優先順序高於>=或<=,所以要注意括號的使用

df.loc[(df['column_name'] >= A) & (df['column_name'] <= B)]

4、篩選出列值不等於某個/些值的行

df.loc[df['column_name'] != 'some_value']

df.loc[~df['column_name'].isin('some_values')] #~取反

如果你覺得我的文章還可以,可以關注我的微信公眾號,檢視更多實戰文章:Python爬蟲實戰之路
也可以掃描下面二維碼,新增我的微信公眾號

相關推薦

使用pandas篩選指定對應

在pandas中怎麼樣實現類似mysql查詢語句的功能: select * from table where column_name = some_value; pandas中獲取資料的有以下幾種方法: 布林索引 位置索引 標籤索引 使用API 假設資料如下: import pandas as pd im

Panda篩選相同的

比如DataFrame有兩列,[luid,message] 現在我想挑選出相同人傳送的資訊 那麼程式碼如下: # 篩選出luid相同的行 subData = trainData.loc[(trainD

pandas Dataframe按指定排序問題

想檢視按某列值排序後的情況,借鑑網上的解決辦法: df.sort_values(by="sales" , ascending=False) by 指定列 ascending 想顯示結果的話,可以設定另一個變數 b=df.sort_values(by="sales" , a

mysql查詢篩選同時重複的資料

例如表test: id name age 1 a 10 2 a 10 3 b 10 篩選出name和age不重複的資料 SELECT a.id,a.name,a.age FROM (SELECT t

js實現獲取兩個日期之間篩選指定周日制的方法

js var start = "2017-5-25"; var end = "2017-6-5"; var startTime = new Date(start); var endTime = new Date(end) var timeArr = []; var weekDay = ["1","2

pandas篩選表中滿足另一個表所有條件的資料

今天記錄一下pandas篩選出一個表中滿足另一個表中所有條件的資料。例如: list1 結構: 名字,ID,顏色,數量,型別。list1 = [['a',1,255,100,'03'],['a',2,481,50,'06'],['a',47,255,500,'03'],['b

獲取DataGrid指定

1.獲取選中行 2.選中行轉換為DataRowView 3.獲取指定列 示例程式碼 //dg為DataGrid控制元件名稱 if (null != dg.SelectedItem) { DataRowView drv = dg.SelectedItem as DataRow

[Python]numpy:獲取索引對應的數字(索引、下標轉化為數字)

舉個例子: q=[0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15] 我想獲取其中值等於7的那個值的下標,以便於用於其他計算。 如果使用np.where,如: q=np.arange(0,16,1) g=np.where(q==7) print

Python中獲取字典中value的最大對應的鍵的方法

可以用max(dict,key=dict.get)方法獲得字典dict中value的最大值所對應的鍵的方法,max(dict, key)方法首先遍歷迭代器,並將返回值作為引數傳遞給key對應的函式,然後將函式的執行結果傳給key,並以此時key值為標準進行大小判斷,返回最大值

把資料庫表中某幾相同的去重,只保留一行

使用分析函式row_number() over (partition by … order by …)來進行分組編號,然後取分組標號值為1的記錄即可。目前主流的資料庫都有支援分析函式,很好用。 其中,partition by 是指定按哪些欄位進行分組,這些欄

pandas 知道幾個index的,求這些index對應的資料

''' Unnamed: 0 duration user_id subject_1 0 907296360955 957658 5548154389 1

pandas 篩選指定或者的資料

pandas主要的兩個資料結構是:series(相當於一行或一列資料結構和DataFrame(相當於多行多列的一個表格資料機構)。    原文:https://www.cnblogs.com/gangandimami/p/8983323.html 1.重新索引:reindex和ix

pandas 篩選指定或者的數據

指定 情況 選擇 修改索引 部分 table ron index 兩個 pandas主要的兩個數據結構是:series(相當於一行或一列數據結構和DataFrame(相當於多行多列的一個表格數據機構)。 原文:https://www.cnblogs.com/ganga

jquery datagrid根據指定改變在行的背景顏色

$('#gridlist').datagrid({      rowStyler:function(index,row){          if (row.ORDERSID==1){              return 'background-color:gray;'

python利用pandas矩陣的最大或最小及其對應的位置

import pandas as pd text = pd.DataFrame([[21,45,78],[23,56,89],[14,25,36],[47,58,69]]) # 先建立一個矩陣 print(text) Out[1]: 0 1 2 0 21 45 78 1

【Bootstrap Table】在指定中新增下拉框控制元件,並獲取

背景   最近在使用Bootstrap table ,有一個在某一列新增一個下拉列表,並且通過 “getAllSelections”方法獲取所選行的需求,在實現這個功能的時,走了一些彎路,遇到了一些坑。所以今天總結出來,既是自己的學習,也分享給大家,

遍歷一個對象中所有屬性對應

對象 屬性 值和遍歷 數組中的每一個元素的方法很類似註意:在遍歷數組時 其中的i對應著數組的下標。遍歷一個對象中所有屬性所對應的值

pandas布林表示式篩選表的資料,注意多個條件需加括號

result[(result.CREATE_TIME > pd.to_datetime('2018-07')) & (result.CREATE_TIME < pd.to_datetime('2018-08'))] 如果要使用與(and),用符號&表示,如df.A&n

pandas DataFrame高效程式設計方法: 根據多做判斷,生成新的,其中多是包含多個的資料型別

一.遇到的問題描述: 我遇到問題的資料比較複雜,下面以比較簡單的資料為例說明問題,所以這些資料的含義是沒有意義的,可以忽略資料的的具體意義。資料如下所示: import numpy as np import pandas as pd data = {'city': [{'Beijing':1

實現功能:點選選項之後,篩選對應的產品

實現功能:點選選項之後,篩選出對應的產品 1.注意替換後臺提供的url 2.beforeSend: function(){       $("#xunhuan2").html("");    }, 實現在傳送前,清空內容 3.html