詳解Pandas之容易讓人混淆的行選擇和列選擇

2022-10-04 07:48:06 字數 1519 閱讀 6730

在剛學pandas時,行選擇和列選擇非常容易混淆,在這裡進行一下討論和歸納

本文的資料**:

import pandas as pd

fandango = pd.read_csv('fandango_score_comparison.csv')

程式設計客棧

原始的資料如下(擷取了一部分)

行選擇pandas進行行選擇一般有三種方法:

第一種,使用類似於python的列表切片

n = fandango[1:3]

從結果可以看到,和python的列表切片一樣,索引號從0開始,選擇了索引號1和2的資料(不包括3)

第二種,按照指定的索引選擇一行或多行,使用loc方法

o = fandango.loc[1]

p = fandango.loc程式設計客棧[1:3]

可以看到,o是乙個series,選擇了索引號為1的那一行資料,注意p,它與第一種的列表索引最大的不同是包含了索引號為3的那一行資料

u = fandango.loc[[1,3]]

這裡按照索引號選擇不連續的行

第三種,按照指定的位置選擇一行多多行,使用iloc方法

在上面的資料中,使用iloc和loc的效果是一樣的,因為索引號都是從0開始並且連續不斷,現在我要刪除索引號為1和2的這兩行

fandango_drop = fandango.drop([1,2], axis=0)

可以看到的確刪除了兩行資料

此時我仍然用loc來索引行號為2的那一行,就會出錯

s = fandango_drop.loc[2]

但是,我使用iloc來進行一次

t = fandango_drop.iloc[2]

看到了吧,iloc[2]的意思是選擇第三行的資料,也就是索引號為4的那一行資料,因為iloc的計算也是從0開始的,所以iloc適用於資料進行了篩選後造成索引號與原來不一致的情況

loc與iloc方法之間還有乙個巨大的差別,那就是loc裡的引數是對應的索引值即可,所以引數可以是整數,也可以是字串。而iloc裡的引數表示的是第幾行的資料,所以只能是整數

列選擇列選擇比較簡單,只要直接把列名傳遞過去即可,如果有多列的資料,要單獨指出列名或列的索引號

第一種,選擇單列,選擇了電影名稱那一列

q = fandango['film']

第二種,通過指定列名選擇多列

r = fandango[['film','metacritic']]

第三種,非常容易讓人混淆的,通過列的索引號選擇多列

v = fandango[[0,1,2]]

其實,列也是有乙個索引號的,看到這裡不禁想問,那我要選擇前5列呢?我不想寫乙個長列表,又不想逐個寫出這5列的名稱,能否用切片呢?

x = fandango[[0:5]]

事實證明,這是不行的,更好的方法是在引數中構建乙個列表

w = fandango[list(range(5))]

本文標題: 詳解pandas之容易讓人混淆的行選擇和列選擇

本文位址: /jiaoben/python/265090.html

js容易讓人眼瞎的寫法

1。自製型函式巢狀 function a,b fn1,fn2 像這一題,我不知道a,b傳入的引數是什麼 那我就找到function外層的括號,標記它,再往下翻 找到括號變色的位置,發現呼叫的是 a 也可以寫成函式 2.0x319289 sw oo0o00o0 a b c 變數名混淆 3函式名不一致 ...

Pandas詳解四之MultiIndex物件

約定import pandas as pd from pandas import dataframe import numpy as npmultiindex表示多級索引,它是從index繼承過來的,其中多級標籤用元組物件來表示。m index1 pd.index a x1 a x2 b y1 b ...

Pandas詳解之排序和排名

約定 import pandas as pd import numpy as np12 排序和排名 根據條件對series物件或dataframe物件的值排序 sorting 和排名 ranking 是一種重要的內建運算。接下來為大家介紹如何使用pandas物件的 sort index sort v...