欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Python,pandas中DataFrame的選取總結

系統 1741 0

pandas中選取方式有很多種,最常用的是一下幾種:直接選取(單維度選取)、iloc();loc();ix()函數選取(區域選區),at();iat()函數選取(單元格選取)。
通過以上幾種方式可以實現:選取某些行、某些列、某區域(同時選擇某些行和某些列)、某個單元格,還可以進行條件選區。具體實現方法如下。

首先創建一個DataFrame.

            
              import pandas as pd
import numpy as np


data = {'name': ['Joe', 'Mike', 'Jack', 'Rose', 'David', 'Marry', 'Wansi',
                 'Sidy', 'Jason', 'Even'],

        'age': [25, 32, 18, np.nan, 15, 20, 41, np.nan, 37, 32],

        'gender': [1, 0, 1, 1, 0, 1, 0, 0, 1, 0],

        'isMarried': ['yes', 'yes', 'no', 'yes', 'no',
                      'no', 'no', 'yes', 'no', 'no']}
        
labels = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']

df = pd.DataFrame(data, index = labels)

print(df)

            
          

輸出結果為:

            
                  name   age  gender isMarried
a    Joe  25.0       1       yes
b   Mike  32.0       0       yes
c   Jack  18.0       1        no
d   Rose   NaN       1       yes
e  David  15.0       0        no
f  Marry  20.0       1        no
g  Wansi  41.0       0        no
h   Sidy   NaN       0       yes
i  Jason  37.0       1        no
j   Even  32.0       0        no

            
          

1. 直接選取
選取行:直接在定義的df后加[ ],然后輸入數字索引或者定義的行標簽,可以使用切片。
選取列:直接在定義的df后加[ ],然后輸入定義的列標簽,不能使用切片。
選取行使用切片時應注意,數字索引為左閉右開,自己定義的標簽索引為左閉右閉。

            
              #選取行
df[0 : 2]#左閉右開
df[:1]
df['a' : 'c']#左閉右閉

#選取列
df['name']
df[['name', 'age']]#多個列的時候要用兩個[]
df[lambda df: df.columns[0]]#選取第一列

            
          

注意:直接選取列時不能使用切片

            
              df[['name': 'gender']]#選取列時使用切片會報錯

    df[['name': 'gender']]
              ^
SyntaxError: invalid syntax

            
          

用直接選取來進行條件選取

            
              
#條件選取行
df[[i > 30 for i in df['age']]]
df[df['age'] > 30]


            
          

上面兩個輸出如下

            
                  name   age  gender isMarried
b   Mike  32.0       0       yes
g  Wansi  41.0       0        no
i  Jason  37.0       1        no
j   Even  32.0       0        no

            
          

當條件有多個時,可以用&,|, !=等連接多個條件,但是符號前后要加()

            
              #篩選出年齡大于30且未婚的人
df[(df['age'] > 30) & (df['isMarried'] == 'no')]#多個條件,每個條件要用()括起來

	輸出結果為:
    name   age  gender isMarried
g  Wansi  41.0       0        no
i  Jason  37.0       1        no
j   Even  32.0       0        no

            
          

2.loc()、 iloc()、ix()選取區域
這三個的功能相同,都能同時選取行和列,從而選取某個區域或者某(些)行或列。但是其用法不同。區別如下:
loc[],只能用標簽選取,前閉后閉
iloc[],只能用整數選取,前閉后開
ix[], 可以使用標簽和整數。不管用哪個索引,均為左閉右閉。
另外, 三種方法都可以時用切片,也可以進行條件選取。

loc()的用法舉例

            
              #.loc[],只能用標簽選取,前閉后閉
#選取行
df.loc['a', :]
df.loc['a']#默認所有列
df.loc['a':'c', :]#使用切片時不用加[ ]
df.loc[['a', 'c'], ['name', 'age']]#選擇某個區域,選擇多個單獨的行時,要加[ ],相當于創建一個所選行或列的列表
df.loc[df['age'] > 30, : ]#條件選取

#選擇列
df.loc[:, 'name']
df.loc[:, 'name' : 'isMarried']#使用切片時不用加[ ]
df.loc[:, ['name', 'isMarried']]#選擇多個單獨的列時,要加[ ]
df.loc[df['age'] > 30, ['name', 'age']]#條件選取

#輸出行名為‘Mike’或‘Marry’的姓名和年齡
df.loc[(df['name'] == 'Mike') | (df['name'] == 'Marry'), ['name', 'age']]
輸出為:
    name   age
b   Mike  32.0
f  Marry  20.0

            
          

iloc()用法舉例

            
              
#iloc[],只能用整數選取,前閉后開
#選取行
df.iloc[0, :]
df.iloc[0]#默認所有列
df.iloc[0 : 3, :]#使用切片時不用加[ ]
df.iloc[[0, 3], :]##選擇某個區域,選擇多個單獨的行時,要加[ ]
#df.iloc[df.iloc[0] > 30, :]不可行

#選取列
df.iloc[:, 0]
df.iloc[:, 0 : 3]#不包含第四列
df.iloc[:, [0, 3]]#第一列和第四列


#同時選取行和列(選取區域)
df.iloc[1, [0, 2, 3]]
df.iloc[: 3, : 3]

            
          

ix()方法
其用法與loc()和iloc()用法相同
不管使用標簽還是數字索引,選擇區間都為左閉右閉(下面的舉例可以看出)。

            
              #ix[], 可以使用標簽和整數
>>>df.ix[2, 'name']#第1行,name列(相當于選擇了單個單元格)
Out[15]: 'Jack'

>>>df.ix[['a', 'c'], [0, 3, 1]]#選擇了若干個單元格
Out[16]: 
   name isMarried   age
a   Joe       yes  25.0
c  Jack        no  18.0

>>>df.ix[2: 5]#選取某些行,左閉右閉
Out[19]: 
    name   age  gender isMarried
c   Jack  18.0       1        no
d   Rose   NaN       1       yes
e  David  15.0       0        no

>>>df.ix[:, 'name': 'gender']#選取某些列,左閉右閉
Out[20]: 
    name   age  gender
a    Joe  25.0       1
b   Mike  32.0       0
c   Jack  18.0       1
d   Rose   NaN       1
e  David  15.0       0
f  Marry  20.0       1
g  Wansi  41.0       0
h   Sidy   NaN       0
i  Jason  37.0       1
j   Even  32.0       0

>>>df.ix[2: 5, 'name': 'gender']#選取一塊區域,左閉右閉
Out[18]: 
    name   age  gender
c   Jack  18.0       1
d   Rose   NaN       1
e  David  15.0       0

>>>df.ix[df['isMarried'] == 'no', ['name', 'age']]#選擇符合未婚條件的某區域
Out[17]: 
    name   age
c   Jack  18.0
e  David  15.0
f  Marry  20.0
g  Wansi  41.0
i  Jason  37.0
j   Even  32.0

            
          

3. at[ ]、iat[ ]選取單元格
#.at[],只能用標簽索引

            
              df.at['a', 'name']
Out[21]: 'Joe'

            
          

#.iat[],只能用整數索引

            
              df.iat[1, 0]
Out[22]: 'Mike'

            
          

更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 日本福利一区 | 91看大片 | 91探花视频在线观看 | 日韩欧美在线免费观看 | 亚洲成a人片在线网站 | 五月天激情视频 | 91tv在线观看 | 欧美日韩精品一区二区三区蜜桃 | 三级网页| 黑色丝袜美女自安慰视频 | 国产高清一区二区三区 | 欧美日韩亚洲高清不卡一区二区三区 | 91看片淫黄大片欧美看国产片 | 青青草人人 | 国产成人精品一区二区三区电影 | 黑色丝袜美女被狂躁 | 国产一级毛片午夜福 | 欧美日韩精品一区三区 | 久久精品免费观看 | 一级黄色大毛片 | 久久精品视频免费 | 精品亚洲国产成av人片传媒 | 国产福利区一区二在线观看 | 亚洲欧美在线视频免费 | 日本黄色大片免费观看 | 91福利小视频| 欧美一区二区在线免费观看 | 日韩视频一区二区三区 | 尤物tv在线| 狠狠草视频 | 久久综合色婷婷 | 久久夜夜 | 亚洲一区无码中文字幕 | 欧美日韩在线视频播放 | 国产精品久久久久免费 | 一级片网址 | 三级视频全过程 | 波多野结衣在线免费 | 国产精品原创巨作av | 欧美午夜精品一区二区蜜桃 | 国产成人免费高清激情视频 |