1. 程式人生 > >python3怎麼篩選excel中特定的行(行中的值滿足某個條件/行中的值屬於某個集合)

python3怎麼篩選excel中特定的行(行中的值滿足某個條件/行中的值屬於某個集合)

做資料分析的時候通常我們並不是對真個excel檔案進行操作,換言之,每一列都是一個特徵,我們需要針對分析。遇到這類問題的時候,我們通常想得到一列中所有符合條件的資料,挑出來,然後組成一個單獨的檔案進行分析。比如一列中我們希望找到所有大於100的所有行,又比如 我們希望得到一列中包含某個特定字母的所有行,那麼我們應該怎麼辦呢,這裡就說一下。

   在這之前我們先介紹一個pandas裡面一個函式 loc() 

   英文解釋是這樣的:Purely label-location based indexer for selection by label.

               .loc[] is primarily label based, but may also be used with a boolean array.

  最通俗的講就是標籤索引器

瞭解了這個函式(具體用法下面兩個例子就可以懂),我們可兩個例子 就可以選擇我們想要的行了


  問題一:我們想要“behavior_type”列中所有為3或4的行

import pandas as pd
import numpy as np

import csv

for df in pd.read_csv(open(r'C:\Users\yang\Desktop\useer.csv','r'),chunksize=10000): 
     print(df.loc[df['behavior_type']>1,:])

從這個程式我們可以得出 .loc() 前面是我們的整個索引目標,括號中為索引標籤(我們回到loc英文解釋第二局話,可以索引布爾型) ,那麼這麼簡單一句話就可以把所以為3,4的行輸出了.後面的冒號代表從開始到最後索引

     print(df.loc[df['behavior_type'].isin([3,4]),:]) 注意 這裡的isin([ ])有小括號 也有中括號集合的形式。

我們也可以利用isin代替大於號性質是一樣的,該標籤下所有為3,4的集合的布林型 然後再索引

     print(df[df['behavior_type'].isin([3,4])])

提到isin 我們想到了一個更為簡單的方法,直接索引即可

問題一:我們想要“user_geohash”列中所有含有字母‘qo’的行

print(df.loc[df['user_geohash'].str.contains('qo')])

是不是已經想到了 利用loc就可以了,只要後面加上字串str.contains()函式即可。

那麼到這裡所有的問題迎刃而解,那麼我們想要索取特定行呢 我們想要索取特定列呢

沒問題 讓我們繼續深入瞭解loc函式

df是一個dataframe,列名為A B C D
具體值如下:
A    B    C     D
0    ss   小紅  8
1    aa   小明  d
4    f          f
6    ak   小紫  7 
dataframe裡的屬性是不定的,空值預設為NA。
一、選取標籤為A和C的列,並且選完型別還是dataframe
df = df.loc[:, ['A', 'C']]
df = df.iloc[:, [0, 2]]
二、選取標籤為C並且只取前兩行,選完型別還是dataframe
df = df.loc[0:2, ['A', 'C']]  
df = df.iloc[0:2, [0, 2]] 

聰明的你發現loc的用法了嗎?