上一篇:
橘猫吃不胖:pandas回顾小结(一)zhuanlan.zhihu.comIndex
Index也有很多种类型,官方文档介绍:Index objects - pandas 1.1.4 documentation
index是可以包含重复值的
df = pd.DataFrame([[1,2,3],[4,5,6],[7,8,9]], columns=list('abc'), index=list('xyx'))
df.index.is_unique
使用is_unique可以判断index中是否包含重复值
有重复值,在筛选的时候,会返回多行
df.loc['x']
DataFrame.reset_index
(level=None,drop=False,inplace=False,col_level=0,col_fill='')
重置索引,默认会使用0,1...进行重置
df.reset_index()
这里,会发现原来的index,成为了column,可以使用参数来决定是删掉还是变为column
df.reset_index(drop=True)
还有一个类似的函数
DataFrame.reindex
(**kwargs)
类似于重建索引,是重建,而不是上面的重置,这里我们需要指定想更新为什么index
df = pd.DataFrame(np.arange(1,10).reshape((3,3)) , index=['x','y','z'], columns=['one','two','three'])
df.reindex(['x','z'])
这里,我们更新的索引和原来有部分相似,所以,相当于一个筛选,如果是完全没有的index
df.reindex([1,2,3])
就都是空值了
df.reindex(['z','x','w'], fill_value=888)
删除索引或列
DataFrame.drop
(labels=None,axis=0,index=None,columns=None,level=None,inplace=False,errors='raise')
df = pd.DataFrame(np.arange(1,10).reshape((3,3)) , index=['x','y','z'], columns=['one','two','three'])
df.drop(index=['x','z'])
排序
在excel中,我们可以进行排序,pandas中也是可以的
DataFrame.sort_index
(axis=0,level=None,ascending=True,inplace=False,kind='quicksort',na_position='last',sort_remaining=True,ignore_index=False,key=None)
根据标签进行排序
df = pd.DataFrame(np.arange(1,10).reshape((3,3)) , index=[3, 1, 4], columns=['c','a','b'])
df.sort_index()
## 降序排列
df.sort_index(ascending=False)
## 按照column排序
df.sort_index(axis=1)
当然也可以按照values排序,参考:
DataFrame.sort_values(by, axis=0, ascending=True, inplace=False, kind='quicksort', na_position='last', ignore_index=False, key=None)
df = pd.DataFrame(np.random.randint(10, size=(6,6)), index=list('abcdef'), columns=list('opqrst'))
df.sort_values(by=['p'])
根据指定的column进行排序
排名
有时候,想要对排序添加一个排名
DataFrame.rank(axis=0,method='average',numeric_only=None,na_option='keep',ascending=True,pct=False)
根据指定的列进行排序
df['p'].rank()
这里的排名,如果数值相同,排名是一样的,而且还是3.5
可以通过method参数来修改