重建索引
reindex用于创建一个符合新索引的对象,如果某个索引值之前不存在,则引入缺失值
obj2 = obj.reindex(['a','b'])
为解决缺失值问题,使用ffill方法会将值前向填充
obj3.reindex(range(6),method='ffill')
reindex可选择重建行列索引
frame.reindex(columns=states)
frame.reindex(index=states)
loc可进行更简洁的标签索引
frame.loc[['a','b'], states]
删除条目
obj.drop(['a','b'])
obj.drop('c)
调用drop会根据行标签删除值,若要按列标签
obj.drop('a',axis=1)
obj.drop('a',axis='columns')
索引选择数据
布尔数组选择
data[data['a']>5]
loc轴标签选择,iloc整数标签选择
data.loc[:'c', 'one']
data.iloc[:3, 1]
填充值
两个df加到一起会导致在一些不重叠的位置出现NA
使用add,并使用fill_value填充
df1.add(df2, fill_value=0)
DataFrame和Series间的操作
DataFrame和Series间的操作类似于numpy中的广播机制
series = frame.iloc[0]
frame - series
如果想改为在列上进行广播,在行匹配,必须使用算术方法
series = frame['column0']
frame.sub(series, axis='index')
函数映射
将函数应用到一行或一列的一维数组上,apply方法可实现功能,返回是每一列的结果
f = lambda x :x.max() - x.min()
frame.apply(f)
若要每行调用一次
frame.apply(f, axis='columns')
排序与排名
对Dataframe排序,sort_index()
axis:按行或列,ascending:升序或降序
obj.sort_index(axis=0,ascending=False)
按Series值排序,使用sort_values
series.sort_values(by='b')
series.sort_values(by=['a', 'b'])
排名,对数组从1到有效数据点总数分配名次的操作。
obj.rank()