Pandas DataFrame如何按照一列数据的特定顺序进行排序
作者:凞懿
这篇文章主要介绍了Pandas DataFrame如何按照一列数据的特定顺序进行排序,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
DataFrame按照一列数据的特定顺序进行排序
原理
先把该列转成category 格式,再弄一个排好序的列表,导入排序即可
dis3 = data3.groupby('distance_group')['case0'].count().reset_index() list_dis = ['gps incomplete', 'no move', 'in 5 meters', 'in 50 meters','in 500 meters','in 5 km','in 50 km','out 50 km'] dis3['distance_group'] = dis3['distance_group'].astype('category') dis3['distance_group'].cat.reorder_categories(list_dis, inplace=True) dis3.sort_values('distance_group',inplace = True)
Pandas库DataFrame的排序 输出特定某列
# -*- coding:utf-8 -*- import tushare as ts import pandas as pd df = pd.read_excel('test.xlsx') df1 = df.head(10) #dataframe按索引升序排列,默认即是升序 print df1.sort_index() #dataframe按索引降序排列 print df1.sort_index(ascending=False) #第一行按升序排序,默认即是升序 print df1.sort_index(axis=1) #第一行按降序排序 print df1.sort_index(axis=1, ascending=False) #以amount这一列的值进行排序,默认从小到大 print df1.sort_values(by='amount') #以amount这一列的值进行排序,从大到小 #print df1.sort_values(by='amount', ascending=False)
1:取行的操作
house_info.loc[3:6]
类似于python的切片操作
2:取列操作
house_info['price']
这是读取csv文件时默认的第一行索引
3:取两列
house_info[['price',tradetypename']]
取多个列也是同理的,注意里面是一个list的列表,不然会报错误;
4:增加列
house_Info['adress_new']=list([.....])
跟字典的操作有点类似;
5:对某一列除以他的最大值
这样可以得到一个0,1的数值范围,也就是一个简易的归一化操作;
house_info['price']/house_info['price'].max()
6:对列进行排序操作
house_info.sorted_values('price',inplace=True,ascending=True)
这里的inplace表示再排序的时候是否生成一个新的dataframe 结构,ascending=true表示升序,默认也是升序;
还有一点应该注意的是:对于缺省值,(Nan)排序的时候会把他排在末尾;
7:如何获取缺省值
column_null = pd.isnull(column) column_is_null_true = column[column_null]
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。