pandas库学习(六) 更灵活的操作
2018-11-02 本文已影响0人
3ni
对于Series来说,不仅仅可以通过Series的索引值来获取数据,也可以使用整数来获取数据,甚至还可以用切片来获取。
obj = Series(np.arange(4.), index=['a', 'b', 'c', 'd'])
a 0.0
b 1.0
c 2.0
d 3.0
dtype: float64
print obj['b']
1.0
print obj[1]
结果和上面一样
obj[1:3]
b 1.0
c 2.0
dtype: float64
obj[1:5]
不会报错
b 1.0
c 2.0
d 3.0
dtype: float64
obj[['b', 'a', 'd']]
b 1.0
a 0.0
d 3.0
dtype: float64
直接对元素进行筛选:
obj[obj < 2]
a 0.0
b 1.0
dtype: float64
当使用索引值来进行切片时会不一样,它会包含右边的结束点
obj['a':'c']
a 0.0
b 1.0
c 2.0
dtype: float64
也可以利用切片来进行赋值:
obj['a':'c']=5
a 5.0
b 5.0
c 5.0
d 3.0
dtype: float64
对DataFrame进行操作:
data = DataFrame(np.arange(16).reshape((4, 4)),index=['Ohio', 'Colorado', 'Utah', 'New York'],columns=['one', 'two', 'three', 'four'])
one two three four
Ohio 0 1 2 3
Colorado 4 5 6 7
Utah 8 9 10 11
New York 12 13 14 15
data['two']
和data[['three', 'one']]
,data[:2]
操作都是可以的
data[data['three'] > 5]
one two three four
Colorado 4 5 6 7
Utah 8 9 10 11
New York 12 13 14 15
data<5
one two three four
Ohio True True True True
Colorado True False False False
Utah False False False False
New York False False False False
data[data<5] = 0
比较的同时进行赋值
one two three four
Ohio 0 0 0 0
Colorado 0 5 6 7
Utah 8 9 10 11
New York 12 13 14 15
data.ix['Colorado',['two','three']]
two 5
three 6
Name: Colorado, dtype: int64
data.ix[['Colorado','Utah'],[3, 0, 1]]
并没有改变元素
four one two
Colorado 7 0 5
Utah 11 8 9
data.ix[2]
取出第三行数据
data.ix[:'Utah','two']
从开始行到索引为'Utah'行中的'two'列中的元素
Ohio 0
Colorado 5
Utah 9
Name: two, dtype: int64
data.ix[data.three > 5,:3]
data数据中'three'列的中元素大于5的行,取前面三列
one two three
Colorado 0 5 6
Utah 8 9 10
New York 12 13 14