9.Pandas索引和切片
索引和切片:
Series的打印效果,让我们感觉它像个二维表格,实际上它还是一维的,其索引和numpy的一维数组比较类似,但还是有点区别的。
Series操作:
se = pd.Series(np.linspace(1, 4, 5), index=list('abcde'))
print(se)
# 索引取值
print('-----索引取值')
print(se['b'])
# 切片
print('-----切片元素')
print(se[2:4])
# 根据索引顺序,值进行排序,取值
print('------根据索引顺序,值进行排序取值')
print(se[['b', 'c', 'd']])
# 逐个值对比
print(se > 2)
# 原值进行修改
print('原值进行修改')
se['b':'c'] = 10
print(se)
#------
a 1.00
b 1.75
c 2.50
d 3.25
e 4.00
dtype: float64
-----索引取值
1.75
-----切片元素
c 2.50
d 3.25
dtype: float64
------根据索引顺序,值进行排序取值
b 1.75
c 2.50
d 3.25
dtype: float64
a False
b False
c True
d True
e True
dtype: bool
a 1.00
b 10.00
c 10.00
d 3.25
e 4.00
dtype: float64
注意:如果你的Series是显式的整数索引,那么s[1]
这样的取值操作会使用显式索引,而s[1:3]
这样的切片操作却会使用隐式索引。
DataFrame操作:
df = pd.DataFrame(np.arange(16).reshape(4, 4), index=list('abcd'), columns=list('efgh'))
print('原DataFrame')
print(df)
# 默认按照列索引
print('按照列e索引取值')
print(df['e'])
# 按照行索引取值
# 这里是不能直接按照行索引进行取值的
# KeyError: 'a'
# print(df['a'])
# 可以这样取
print('# 按照行切loc')
print(df.loc['c'])
# 或者
print('# 按照行切iloc')
print(df.iloc[:1:])
#------
原DataFrame
e f g h
a 0 1 2 3
b 4 5 6 7
c 8 9 10 11
d 12 13 14 15
按照列e索引取值
a 0
b 4
c 8
d 12
Name: e, dtype: int32
# 按照行切loc
e 8
f 9
g 10
h 11
Name: c, dtype: int32
# 按照行切iloc
e f g h
a 0 1 2 3