日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

pandas中如何提取DataFrame的某些列

發(fā)布時(shí)間:2023/12/8 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pandas中如何提取DataFrame的某些列 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在處理表格型數(shù)據(jù)時(shí),一行數(shù)據(jù)是一個(gè) sample,列就是待提取的特征。怎么選取其中的一些列呢?本文分享一些方法。

使用如下的數(shù)據(jù)作為例子:

import pandas as pd data = pd.DataFrame({'Name':['Anna', 'Betty', 'Richard', 'Philip','Paul'],'course1':[85,83,90,84,85],'course2':[90,85,83,88,84],'course3':[82,86,81,91,85],'fruit':['apple','banana','apple','orange','peach'],'sport':['basketball', 'volleyball', 'football', 'basketball','baseball']},index=[1,2,3,4,5])df = pd.DataFrame(data) df Namecourse1course2course3fruitsport12345
Anna859082applebasketball
Betty838586bananavolleyball
Richard908381applefootball
Philip848891orangebasketball
Paul858485peachbaseball

方法一:df[columns]

先看最簡(jiǎn)單的情況。輸入列名,選擇一列。例如:

df['course2'] 1 90 2 85 3 83 4 88 5 84 Name: course2, dtype: int64

df[column list]:選擇列。例如:

df[['course2','fruit']] course2fruit12345
90apple
85banana
83apple
88orange
84peach

或者以 column list (list 變量)的形式導(dǎo)入到 df[ ] 中,例如:

select_cols=['course2','fruit'] df[select_cols] course2fruit12345
90apple
85banana
83apple
88orange
84peach

可以用 column list=df.columns[start:end] 的方式選擇連續(xù)列,start 和 end 均為數(shù)字,不包括 end 列。例如:

select_cols=df.columns[1:4] df[select_cols] course1course2course312345
859082
838586
908381
848891
858485

你可能注意到,其中有 3 列的名字相近:‘course1’,‘course2’,‘course3’。怎么提取這三列呢?這里分享在Kaggle 上看到 一位大神使用的 list comprehension方法。

select_cols=[c for c in df.columns if 'course' in c] df[select_cols] course1course2course312345
859082
838586
908381
848891
858485

但是,如果你想輸入df['course1':'course3'] 來(lái)索引連續(xù)列,就會(huì)報(bào)錯(cuò)。而輸入數(shù)字索引df[1:3]時(shí),結(jié)果不再是列索引,而是行索引,如下所示:

df[1:3] Namecourse1course2course3fruitsport23
Betty838586bananavolleyball
Richard908381applefootball

以下兩種方法 df.loc[]和df.iloc[]就可以解決這個(gè)問(wèn)題,可以明確行或列索引。還可以同時(shí)取多行和多列。

方法二:df.loc[]:用 label (行名或列名)做索引。

輸入 column_list 選擇多列 [:, column_list],括號(hào)中第一個(gè): 表示選擇全部行。例如:

df.loc[:,['course2','fruit']] course2fruit12345
90apple
85banana
83apple
88orange
84peach

選擇連續(xù)多列 [:,start_col: end_col],注意:包括 end_col。例如:

df.loc[:,'course2':'fruit'] course2course3fruit12345
9082apple
8586banana
8381apple
8891orange
8485peach

選擇多行和多列,例如:

df.loc[1:3,'course2':'fruit'] course2course3fruit123
9082apple
8586banana
8381apple

與 df[ ]類(lèi)似,df.loc[ ]括號(hào)內(nèi)也可以輸入判斷語(yǔ)句,結(jié)果是對(duì)行做篩選。例如:

df.loc[df['course1']>84] #注:輸入df[df['course1']>84],輸出結(jié)果相同 Namecourse1course2course3fruitsport135
Anna859082applebasketball
Richard908381applefootball
Paul858485peachbaseball

方法三:df.iloc[]: i 表示 integer,用 integer location(行或列的整數(shù)位置,從0開(kāi)始)做索引。

df.iloc與df.loc用法類(lèi)似,只是索引項(xiàng)不同。

df.iloc[:,[2,4]] course2fruit12345
90apple
85banana
83apple
88orange
84peach

選擇連續(xù)多列:df.iloc[:, start_ix:end_ix],注意:不包括 end_ix。例如:

df.iloc[:,2:5] course2course3fruit12345
9082apple
8586banana
8381apple
8891orange
8485peach

選擇多行與多列,例如:

df.iloc[1:3,[2,4]] course2fruit23
85banana
83apple

與 df.loc[] 不同,df.iloc[] 括號(hào)內(nèi)不可以輸入判斷語(yǔ)句。

覺(jué)得本文不錯(cuò)的話(huà),請(qǐng)點(diǎn)贊支持一下吧,謝謝!

關(guān)注我 寧萌Julie,互相學(xué)習(xí),多多交流呀!

參考:

1.如何選取dataframe的多列-教程:https://www.geeksforgeeks.org/how-to-select-multiple-columns-in-a-pandas-dataframe/

2.用 list comprehension 選擇多列:https://www.kaggle.com/code/robikscube/ieee-fraud-detection-first-look-and-eda/notebook

3.df.loc 與 df.iloc 的比較:https://stackoverflow.com/questions/31593201/how-are-iloc-and-loc-different

總結(jié)

以上是生活随笔為你收集整理的pandas中如何提取DataFrame的某些列的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。