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

2022-10-04 13:21:30 字數 1422 閱讀 2425

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

select * from table where column_name = some_value;

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

假設資料如下:

import pandas as pd

import numpy as np

df = pd.dataframe()

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

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

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

mask = df['a'] == 'foo'

pos = np.flatnonzero(mask) # 返回的是array([0, nlxahm2, 4, 6, 7])

df.iloc[pos]

#常見的iloc用法

dwww.cppcns.comf.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"')

資料提取不止前面提到的情況,第乙個答案就給出了以www.cppcns.com下幾種常見情況:

1、篩選出列值等於標量的行,用==

程式設計客棧df.loc[df['column_name'] == some_value]

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

df.loc[df['column_n程式設計客棧ame'].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')] #~取反

pandas 篩選指定行或者列的資料

pandas主要的兩個資料結構是 series 相當於一行或一列資料結構和dataframe 相當於多行多列的乙個 資料機構 原文 dataframe.drop labels none,axis 0,index none,columns none,level none,inplace false,e...

Pandas實現in與not in篩選資料

通過df.isin 來判斷dataframe中每個元素是否存在 dataframe.isin 官方文件 import pandas as pd 示例資料 df pd.dataframe 需被清理的user id drop user 2 4,6 按照python的思維,最簡單的做法是 df df df...

如何用c語言篩選出txt中含有指定字串的資料?

比如我有乙個txt,裡面的資料是 m3545 1111 222 4333 m1308 1134 433 2222 開頭的五個字元下面都有很多重複的,我想從中篩選中所有開頭為 m3545 的行,並存入另乙個txt中,於是寫了下面的程式 include include include int main ...