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]
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
