pandas重索引
from pandas import DataFrame
from pandas import Series
obj = Series([1,2,3,4,5], index=['a','b','c','d','e'])
print obj
"""
輸出結(jié)果為:
a 1
b 2
c 3
d 4
e 5
dtype: int64
"""
obj = obj.reindex(['b','a','c','d','e'])
print obj
"""
輸出結(jié)果為:
b 2
a 1
c 3
d 4
e 5
dtype: int64
"""
如果重索引傳入的索引號原在原索引中并不存在則引入空值
obj = obj.reindex(['a','b','c','d','e','f'])
print obj
"""
輸出結(jié)果為:
a 1.0
b 2.0
c 3.0
d 4.0
e 5.0
f NaN
dtype: float64
"""
我們可以控制這個引入的值是什么娶吞,默認(rèn)是NaN庭敦,可以通過fill_value參數(shù)更改
obj = obj.reindex(['a','b','c','d','e','f','1'], fill_value=0)
print obj
"""
輸出結(jié)果為:
a 1.0
b 2.0
c 3.0
d 4.0
e 5.0
f NaN
1 0.0
dtype: float64
"""
函數(shù)應(yīng)用和映射
frame = DataFrame(np.random.randn(4,3))
f = lambda x: x.max() - x.min()
print frame.apply(f)
"""
輸出結(jié)果為:
0 1.134713
1 1.048039
2 2.054689
dtype: float64
"""
元素級的Python函數(shù)也是可以用的。
frame = DataFrame(np.random(4,3))
print frame
"""
輸出結(jié)果為:
0 1 2 3 4
0 0 1 2 3 4
1 5 6 7 8 9
2 10 11 12 13 14
"""
format = lambda x: x+x
print frame.applymap(format)
"""
輸出結(jié)果為:
0 1 2 3 4
0 0 2 4 6 8
1 10 12 14 16 18
2 20 22 24 26 28
"""
以上這些不只是可以使用lambda表達(dá)式败潦,還可以使用def函數(shù)
排序和排名將會是我們比較常用的兩種操作
obj = Series(range(4), index=['d', 'a', 'b', 'c'])
print obj.sort_index()
"""
a 1
b 2
c 3
d 0
dtype: int64
"""
面對DataFrame,則可以根據(jù)任意一個軸上的索引進(jìn)行排序:
frame = DataFrame(np.arange(8).reshape(2,4), index=['three', 'one'],
columns = ['d','a','b','c'])
print frame.sort_index()
"""
輸出結(jié)果為:
d a b c
one 4 5 6 7
three 0 1 2 3
"""
print frame.sort_index(axis=1)
"""
a b c d
three 1 2 3 0
one 5 6 7 4
"""
數(shù)據(jù)默認(rèn)是按升序排序的,但也可以降序排序
print frame.sort_index(axis=1, ascending=False)
"""
輸出結(jié)果為:
d c b a
three 0 3 2 1
one 4 7 6 5
"""
sort_values方法可以對Series進(jìn)行按值排序
obj = Series([4,7,5,6,2])
print obj.sort_values()
"""
輸出結(jié)果為:
4 2
0 4
2 5
3 6
1 7
dtype: int64
"""
在DataFrame中你可以指定一列使數(shù)據(jù)根據(jù)這一列進(jìn)行排序
obj = DataFrame({'a':[1,2,5,4,3],'b':[2,5,4,6,1]})
print obj
print obj.sort_index(by='b')
'''
輸出結(jié)果為:
a b
4 3 1
0 1 2
2 5 4
1 2 5
3 4 6
'''
你也可以通過sort_values這種方式根據(jù)多個列進(jìn)行排序
obj = DataFrame({'a':[1,1,5,4,3],'b':[5,1,4,6,1]})
print obj.sort_values(by=['a','b'])
'''
輸出結(jié)果為:
a b
1 1 1
0 1 5
4 3 1
3 4 6
2 5 4
'''