pandas iloc 与 loc

建议:当用行索引的时候, 尽量用 iloc 来进行索引; 而用标签索引的时候用 loc 。.

iloc与loc可以实现相同的功能:

1)iloc获取行列值时只能用数字

2)当DataFrame的行索引为数字时,loc可以用数字获取行值,当DataFrame的行索引为字符串时,loc只能用字符串获取行值;获取列值只能用字符串

import numpy as np
import pandas as pd

 
data=np.arange(0,30,2)  #arange(起始,结束,相差)
data1=data.reshape(5,3) #reshape转换形状
df=pd.DataFrame(data1,columns=('a','b','c')) #columns定义字段
df1=pd.DataFrame(data1,columns=('a','b','c'),index=('悟空','白马','沙僧','八戒','唐僧')) #columns定义字段
print(df)
print('\n')
print(df1)
print('\n')
"""
    a   b   c
0   0   2   4
1   6   8  10
2  12  14  16
3  18  20  22
4  24  26  28


      a   b   c
悟空   0   2   4
白马   6   8  10
沙僧  12  14  16
八戒  18  20  22
唐僧  24  26  28
"""


# 取单个元素的值
print(df.iloc[2,2])  # 16
print(df.loc[2,'c'])  # 16
print(df1.loc['沙僧','c'])  # 16
print('\n')


# 指定单行(Series)
"""
a    12
b    14
c    16
Name: 2, dtype: int32
"""
print(df.iloc[2])
print(df.loc[2])
print(df1.loc['沙僧'])
print('\n')


# 指定单行(DataFrame)
"""
    a   b   c
2  12  14  16
"""
print(df.iloc[[2]])
print(df.loc[[2]])
print(df1.loc[['沙僧']])
print('\n')


# 指定单列
"""
0     2
1     8
2    14
3    20
4    26
Name: b, dtype: int32
"""
print(df.iloc[:,1])
print(df.loc[:,'b'])
print(df1.loc[:,'b'])
print(df['b'])
print('\n')


# 指定某几行
"""
    a   b   c
2  12  14  16
4  24  26  28
"""
# print(df.iloc[2,4]) #报错
print(df.iloc[[2,4]])
print(df.loc[[2,4]])
print(df1.loc[['沙僧','唐僧']])
print('\n')


# 指定某几列
"""
    a   c
0   0   4
1   6  10
2  12  16
3  18  22
4  24  28
"""
print(df.iloc[:,[0,2]])
print(df.loc[:,['a','c']])
print(df1.loc[:,['a','c']])
print('\n')


# 指定某几行,某几列
"""
    a   c
2  12  16
4  24  28
"""
print(df.iloc[[2,4],[0,2]])
print(df.loc[[2,4],['a','c']])
print(df1.loc[['沙僧','唐僧'],['a','c']])
print('\n')


# 连续多行,iloc[start:end],索引[开始:结束],左闭右开
# 连续多行,loc[start:end],索引[开始:结束],左闭右闭–>与iloc不同
"""
    a   b   c
1   6   8  10
2  12  14  16
3  18  20  22
"""
print(df.iloc[1:4])
print(df.loc[1:3])
print(df1.loc['白马':'八戒'])
print('\n')


# 连续多列,iloc[:,start:end], 索引[开始:结束], 左闭右开
# 连续多列,loc[:,start:end], 索引[开始:结束], 左闭右闭–>与iloc不同
print(df.iloc[:,0:2])
print(df.loc[:,'a':'b'])
print(df1.loc[:,'a':'b'])
print('\n')
"""
    a   b
0   0   2
1   6   8
2  12  14
3  18  20
4  24  26
"""

# 切片来取指定行列
print(df.iloc[2:4,1:])
print(df.loc[2:3,'b':])
print(df1.loc['沙僧':'八戒','b':])
print('\n')
"""
    b   c
2  14  16
3  20  22
"""







 

你可能感兴趣的:(pandas,python,数据分析)