Pandas的iloc loc ix的區別

2021-08-22 12:10:57 字數 1653 閱讀 3843

取dataframe的部分資料,或者修改部分資料是非常非常常見的操作,但是實際應用中,到底使用ix方法,還是iloc方法,還是loc方法,還需要討論。請看下面的實驗:

import pandas as pd

data = [['自有房',40,50000],

['無自有房',22,13000],

['自有房',30,30000]]

data = pd.dataframe

(data,index=['lc','cc','lbb'],columns=['house','age','income'])

df = data.ix[0,1]

df = data.iloc[0,1]

df = data.loc['lc','age']

# df = data.loc[0,'age'] #報錯

# df = data.iloc[0,'age'] #報錯

df = data.ix[0,'age']

df = data.ix[data['age']>=30]

df = data.ix[data['age']>=30,0]

# df = data.iloc[data['age']>=30,0] #報錯

# df = data.iloc[data['age']>=30] #報錯

df = data.loc[data['age']>=30]

df = data.loc[data['age']>=30,'age']

df = data[data['age']>=30]

# df = data[data['age']>=30,'age'] #報錯

df = data[data['age']>=30]['age']

print(df)

data.ix[0,1] = data.ix[0,1]+5

data.iloc[0,1] = data.iloc[0,1]+5

data.loc['lc','age'] = data.loc['lc','age']+5

data.ix[0,'age'] = data.ix[0,1]+5

# data.iloc[0,'age'] = data.iloc[0,1]+5 #報錯

data.loc[0,'age'] = data.loc['lc','age']+5 #會新增一行索引為0的行,且age為lc行age+5,但另外兩列為空值

print(data)

通過實驗結果其實就可以看出來了,結論如下:

1、ix可以接受位置索引和name索引,且行和列不必都是位置或name,但是pycharm有提示過我ix方法要被拋棄了,最好不用;

2、loc是基於name索引的,如果你行或列其中乙個用了位置索引,它會報index錯誤的,但是如果你是賦值給它,它會預設新增一行一列的;

3、iloc是基於位置索引的,如果你行或列其中乙個用了name索引,也是會報index錯誤的,而且賦值也不行;

4、這三種方法都可以新增條件進行過濾

綜上所述,三種方法的功能都是取數,且都具有過濾功能,只是ix可以接受位置和name兩種形式的索引,loc只接受name形式,而iloc只接受位置索引。

pandas找出某值的所有行 Pandas基礎1

1.series 1.1 pandas系列可以使用以下建構函式建立 資料幀 dataframe 是二維資料結構,即資料以行和列的 方式排列。功能 潛在的列是不同的型別 大小可變 標記軸 行和列 可以對行和列執行算術運算 pandas中的dataframe可以使用以下建構函式建立 pandas.dat...

pandas 排序 Pandas 資料排序

python 的 pandas 庫中有一類對資料排序的方法,主要分為對引數列排序,對數值排序,及二者混合三種。一.引數列排序 首先我們生成乙個亂序數列 unsorted df 隨後我們可通過 df.sort index 函式對資料集進行排序操作 如不做規定,返回行引數正序排序 新增引數 ascend...

pandas列相加 Pandas 基礎

git 上pandas學習教程,共有十章 4個板塊 pandas基礎 四類操作 四類資料 例子。原文內容系統的講解了pandas庫的使用方法,編排邏輯易懂,覆蓋面廣且含有相應練習,之前已經學習過pandas,但是感覺應用時有些費力,計畫重新按照學習教程再梳理一遍,爭取10天完成學習,enjoy ti...