如果你想獲取 'A' 列的第 0 和第 2 個元素,你可以這樣做:
成都創(chuàng)新互聯(lián)服務(wù)項目包括屯溪網(wǎng)站建設(shè)、屯溪網(wǎng)站制作、屯溪網(wǎng)頁制作以及屯溪網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,屯溪網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到屯溪省份的部分城市,未來相信會繼續(xù)擴大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
這也可以用 .iloc 獲取,通過使用位置索引來選擇內(nèi)容
可以使用 .get_indexer 獲取多個索引:
警告 :
對于包含一個或多個缺失標(biāo)簽的列表,使用 .loc 或 [] 將不再重新索引,而是使用 .reindex
在以前的版本中,只要索引列表中存在至少一個有效標(biāo)簽,就可以使用 .loc[list-of-labels]
但是現(xiàn)在,只要索引列表中存在缺失的標(biāo)簽將引發(fā) KeyError 。推薦的替代方法是使用 .reindex() 。
例如
索引列表的標(biāo)簽都存在
先前的版本
但是,現(xiàn)在
索引標(biāo)簽列表中包含不存在的標(biāo)簽,使用 reindex
另外,如果你只想選擇有效的鍵,可以使用下面的方法,同時保留了數(shù)據(jù)的 dtype
對于 .reindex() ,如果有重復(fù)的索引將會引發(fā)異常
通常,您可以將所需的標(biāo)簽與當(dāng)前軸做交集,然后重新索引
但是,如果你的索引結(jié)果包含重復(fù)標(biāo)簽,還是會引發(fā)異常
使用 sample() 方法可以從 Series 或 DataFrame 中隨機選擇行或列。
該方法默認會對行進行采樣,并接受一個特定的行數(shù)、列數(shù),或數(shù)據(jù)子集。
默認情況下, sample 每行最多返回一次,但也可以使用 replace 參數(shù)進行替換采樣
默認情況下,每一行被選中的概率相等,但是如果你想讓每一行有不同的概率,你可以為 sample 函數(shù)的 weights 參數(shù)設(shè)置抽樣權(quán)值
這些權(quán)重可以是一個列表、一個 NumPy 數(shù)組或一個 Series ,但它們的長度必須與你要抽樣的對象相同。
缺失的值將被視為權(quán)重為零,并且不允許使用 inf 值。如果權(quán)重之和不等于 1 ,則將所有權(quán)重除以權(quán)重之和,將其重新歸一化。例如
當(dāng)應(yīng)用于 DataFrame 時,您可以通過簡單地將列名作為字符串傳遞給 weights 作為采樣權(quán)重(前提是您要采樣的是行而不是列)。
sample 還允許用戶使用 axis 參數(shù)對列進行抽樣。
最后,我們還可以使用 random_state 參數(shù)為 sample 的隨機數(shù)生成器設(shè)置一個種子,它將接受一個整數(shù)(作為種子)或一個 NumPy RandomState 對象
當(dāng)為該軸設(shè)置一個不存在的鍵時, .loc/[] 操作可以執(zhí)行放大
在 Series 的情況下,這實際上是一個追加操作
可以通過 .loc 在任一軸上放大 DataFrame
這就像 DataFrame 的 append 操作
由于用 [] 做索引必須處理很多情況(單標(biāo)簽訪問、分片、布爾索引等),所以需要一些開銷來搞清楚你的意圖
如果你只想訪問一個標(biāo)量值,最快的方法是使用 at 和 iat 方法,這兩個方法在所有的數(shù)據(jù)結(jié)構(gòu)上都實現(xiàn)了
與 loc 類似, at 提供了基于標(biāo)簽的標(biāo)量查找,而 iat 提供了基于整數(shù)的查找,與 iloc 類似
同時,你也可以根據(jù)這些索引進行設(shè)置值
如果索引標(biāo)簽不存在,會放大數(shù)據(jù)
另一種常見的操作是使用布爾向量來過濾數(shù)據(jù)。運算符包括:
|(or) 、 (and) 、 ~ (not)
這些必須用括號來分組,因為默認情況下, Python 會將 df['A'] 2 df['B'] 3 這樣的表達式評估為 df['A'] (2 df['B']) 3 ,而理想的執(zhí)行順序是 (df['A'] 2) (df['B'] 3)
使用一個布爾向量來索引一個 Series ,其工作原理和 NumPy ndarray 一樣。
您可以使用一個與 DataFrame 的索引長度相同的布爾向量從 DataFrame 中選擇行
列表推導(dǎo)式和 Series 的 map 函數(shù)可用于產(chǎn)生更復(fù)雜的標(biāo)準(zhǔn)
我們可以使用布爾向量結(jié)合其他索引表達式,在多個軸上索引
iloc 支持兩種布爾索引。如果索引器是一個布爾值 Series ,就會引發(fā)異常。
例如,在下面的例子中, df.iloc[s.values, 1] 是正確的。但是 df.iloc[s,1] 會引發(fā) ValueError 。
這幾個函數(shù)在 Python 里面被稱為高階函數(shù),本文主要學(xué)習(xí)它們的用法。
filter 函數(shù)原型如下:
第一個參數(shù)是判斷函數(shù)(返回結(jié)果需要是 True 或者 False),第二個為序列,該函數(shù)將對 iterable 序列依次執(zhí)行 function(item) 操作,返回結(jié)果是過濾之后結(jié)果組成的序列。
簡單記憶:對序列中的元素進行篩選,獲取符合條件的序列。
返回結(jié)果為: ,使用 list 函數(shù)可以輸入序列內(nèi)容。
map 函數(shù)原型如下:
該函數(shù)運行之后生成一個 list,第一個參數(shù)是函數(shù)、第二個參數(shù)是一個或多個序列;
下述代碼是一個簡單的測試案例:
上述代碼運行完畢,得到的結(jié)果是: 。使用 print(list(my_new_list)) 可以得到結(jié)果。
map 函數(shù)的第一個參數(shù),可以有多個參數(shù),當(dāng)這種情況出現(xiàn)后,后面的第二個參數(shù)需要是多個序列。
map 函數(shù)解決的問題:
reduce 函數(shù)原型如下:
第一個參數(shù)是函數(shù),第二個參數(shù)是序列,返回計算結(jié)果之后的值。該函數(shù)價值在于滾動計算應(yīng)用于列表中的連續(xù)值。
測試代碼如下:
最終的結(jié)果是 6,如果設(shè)置第三個參數(shù)為 4,可以運行代碼查看結(jié)果,最后得到的結(jié)論是,第三個參數(shù)表示初始值,即累加操作初始的數(shù)值。
簡單記憶:對序列內(nèi)所有元素進行累計操作。
zip 函數(shù)原型如下:
zip 函數(shù)將可迭代的對象作為參數(shù),將對象中對應(yīng)的元素打包成一個個元組,然后返回由這些元組組成的列表。
如果各個迭代器的元素個數(shù)不一樣,則返回列表長度與最短的對象相同,利用星號( * )操作符,可以將元組解壓為列表。
測試代碼如下:
展示如何利用 * 操作符:
輸出結(jié)果如下:
簡單記憶:zip 的功能是映射多個容器的相似索引,可以方便用于來構(gòu)造字典。
enumerate 函數(shù)原型如下:
參數(shù)說明:
該函數(shù)用于將一個可遍歷的數(shù)據(jù)對象組合為一個索引序列,同時列出數(shù)據(jù)和數(shù)據(jù)下標(biāo),一般用在 for 循環(huán)當(dāng)中。
測試代碼如下:
返回結(jié)果為: 。
本文涉及的函數(shù)可以與 lambda 表達式進行結(jié)合,能大幅度提高編碼效率。最好的學(xué)習(xí)資料永遠是官方手冊
insert()是Python中的內(nèi)置函數(shù),可將給定元素插入列表中的給定索引。
python的insert函數(shù)中有兩個必填參數(shù),第一個是填充的位置,第二個是填充的內(nèi)容。必須有小數(shù)點,不然報錯。一般用1.0,就是往下面一行行的寫。
insert()的參數(shù)和返回值
參數(shù):index - the index at which the element has to be inserted.
element - the element to be inserted in the list.
返回值:This method does not return any value but
it inserts the given element at the given index.
python的index函數(shù)可以獲取列表中值的第一個索引。
list= [1,2,3,4,5,1,2,2]
list.index(2) 1
如果要獲取相同值的最后一個索引:
len(list) - list[::-1].index(2) - 1
反向取得list后,用list的長度減去反轉(zhuǎn)后出現(xiàn)的第一個索引再減1
【常見的內(nèi)置函數(shù)】
1、enumerate(iterable,start=0)
是python的內(nèi)置函數(shù),是枚舉、列舉的意思,對于一個可迭代的(iterable)/可遍歷的對象(如列表、字符串),enumerate將其組成一個索引序列,利用它可以同時獲得索引和值。
2、zip(*iterables,strict=False)
用于將可迭代的對象作為參數(shù),將對象中對應(yīng)的元素打包成一個個元組,然后返回由這些元組組成的列表。如果各個迭代器的元素個數(shù)不一致,則返回列表長度與最短的對象相同,利用*號操作符,可以將元組解壓為列表。
3、filter(function,iterable)
filter是將一個序列進行過濾,返回迭代器的對象,去除不滿足條件的序列。
4、isinstance(object,classinfo)
是用來判斷某一個變量或者是對象是不是屬于某種類型的一個函數(shù),如果參數(shù)object是classinfo的實例,或者object是classinfo類的子類的一個實例,
返回True。如果object不是一個給定類型的的對象, 則返回結(jié)果總是False
5、eval(expression[,globals[,locals]])
用來將字符串str當(dāng)成有效的表達式來求值并返回計算結(jié)果,表達式解析參數(shù)expression并作為Python表達式進行求值(從技術(shù)上說是一個條件列表),采用globals和locals字典作為全局和局部命名空間。
【常用的句式】
1、format字符串格式化
format把字符串當(dāng)成一個模板,通過傳入的參數(shù)進行格式化,非常實用且強大。
2、連接字符串
常使用+連接兩個字符串。
3、if...else條件語句
Python條件語句是通過一條或多條語句的執(zhí)行結(jié)果(True或者False)來決定執(zhí)行的代碼塊。其中if...else語句用來執(zhí)行需要判斷的情形。
4、for...in、while循環(huán)語句
循環(huán)語句就是遍歷一個序列,循環(huán)去執(zhí)行某個操作,Python中的循環(huán)語句有for和while。
5、import導(dǎo)入其他腳本的功能
有時需要使用另一個python文件中的腳本,這其實很簡單,就像使用import關(guān)鍵字導(dǎo)入任何模塊一樣。
轉(zhuǎn)自
Python? range() 函數(shù)返回的是一個可迭代對象(類型是對象),而不是列表類型, 所以打印的時候不會打印列表。
函數(shù)語法:
range(stop)range(start,stop,step)//默認start為0,step為1
Python? list() 函數(shù)是對象迭代器,可以把range()返回的可迭代對象轉(zhuǎn)為一個列表,返回的變量類型為列表。
list() 方法用于將元組轉(zhuǎn)換為列表。
注: 元組與列表是非常類似的,區(qū)別在于元組的元素值不能修改,元組是放在括號中( ),列表是放于方括號中[ ]。
元組中只包含一個元素時,需要在元素后面添加逗號
tup1=(50,)
list、元組與字符串的索引一樣,列表索引從0開始。列表可以進行截取、組合等。