reindex是pandas对象的重要方法。该方法用于建立一个符合新索引的新对象。数组
import pandas as pd obj = pd.Series([4.5, 7.2, -5.3, 3.6], index=['d','b','a','c']) print(obj)
Series调用reindex方法会按新索引从新排列。app
obj2 = obj.reindex(['a','b','c','d','e']) print(obj2)
fill向前填充数据,bfill向后填充数据:dom
obj3 = pd.Series(['blue','purple','yellow'], index=[0, 2, 4]) print(obj3) print(obj3.reindex(range(6),method='ffill'))
在DataFrame中,reindex方法的index关键字能够改变行索引,columns关键字能够改变列索引。函数
可使用loc进行简洁的标签索引。3d
drop方法会返回一个含有指示值或轴向上删除值的新对象:code
obj = pd.Series(np.arange(5.),index=['a', 'b', 'c', 'd', 'e']) print(obj) new_obj = obj.drop('c') print(new_obj)
在DataFrame中调用drop会删除行标签上的值,能够经过传递axis=1
或者axis='columns'
来从列中删除值,以下:对象
data = pd.DataFrame(np.arange(16).reshape((4, 4)), index=['Ohio', 'Colorado', 'Utah', 'New York'], columns=['one', 'two', 'three', 'four']) print(data) # 删除行标签 print(data.drop(['Colorado', 'Ohio'])) # 删除列标签 print(data.drop(['one','three'],axis=1)) print(data.drop('two',axis='columns'))
普通的Python切片是不包含尾部的,Series的切片包含。blog
DataFrame在行上的标签索引,可使用loc(轴标签)和iloc(整数标签)。排序
data1 = pd.DataFrame(np.arange(16).reshape((4, 4)), index=['Ohio', 'Colorado', 'Utah', 'New York'], columns=['one', 'two', 'three', 'four']) print(data1.loc['Colorado', ['two', 'three']]) print(data1.iloc[1, [1, 2]])
也可使用切片功能。索引
为了保持一致性,若是你有一个包含整数的轴索引,数据选择时请始终使用标签索引。
在没有交叠的标签位置上,内部数据对齐会产生缺失值。
在两个不一样的索引化对象之间进行算术操做时,可能会想要使用特殊值填充。 例如:有df1,df2两个数据,二者行或列不彻底相同,那么将二者添加到一块儿会致使在一些不重叠的位置出现NA值。
可使用df1.add(df2,fill_value=0)
这些出现NA值的地方会被以0填充。
表中是Series和DataFrame的算术方法,这些方法中的每个都有一个以r开头的副本,这些副本方法的参数是翻转的。
所以下面两个语句的结果相等:1/df1
等价于 df1.rdiv(1)
一般咱们须要将函数应用到一行或者一列的一维数组上。DataFrame的apply方法能够实现此功能:
frame = pd.DataFrame(np.random.randn(4, 3), columns=list('bde'), index=['Utha', 'Ohio', 'Texas', 'Oregon']) f = lambda x: x.max() - x.min() # 会被列调用一次 print(frame.apply(f))
若是传递axis='columns'
给apply函数,函数会被每行调用。
若是想操做DataFrame中的每一个元素可使用applymap方法。
若是须要按行、列索引进行字典排序,须要使用sort_index方法。该方法返回一个全新的,排序好的对象。
数据默认升序排序,可使ascending=False
使数据降序。
若是要按Series的值进行排序,使用sort_values
方法。
默认状况下,全部缺失值会被排序至Series的尾部。
当对DataFrame排序时,能够传递一个或多个列名给sort_values的可选参数by。
排名是指对数组从1至有效数据点总数分配名词的操做。rank经过将平均排名分配到每一个组来打破平级关系。
obj = pd.Series([7, -5, 7, 4, 2, 0, 4]) print(obj.rank())
排名也能够根据他们在数据中的观察顺序进行分配。
print(obj.rank(method='first'))
下表是可用的平级关系打破方法列表。
DataFrame能够对行或列计算排名。
obj = pd.Series(np.arange(5),index=['a', 'a', 'b', 'b', 'c']) print(obj)
索引的is_unique属性能够告诉你它的标签是否惟一。
print(obj.index.is_unique)
带有重复索引的状况下,根据一个标签索引多个条目会返回一个序列,而单个条目会返回标量值。
这会使得代码更加复杂,由于来自索引的输出类型可能因标签是否重复而有所不一样。