使用DataFrame的sort_values(by, inplace, ascending)
方法可根据指定列对DataFame进行排序。
参数说明:
by
:排序依据的列名,可为单列也可为多列:[“column_name1”]
或者[“column_name1”, “column_name1”, ...]
;inplace
:是否替换原dataframe,默认为False
;ascending
:是否为升序,默认为True
。df.sort_values(["column_name1", "column_name2"] , inplace=True, ascending=True)
# 1.创建df
df = pd.DataFrame({'price':[6, 4, 2, 4, 6], 'weight': [12, 43, 23, 3, 5], 'total':[72, 172, 46, 12, 30]})
df
Out[12]:
price weight total
0 6 12 72
1 4 43 172
2 2 23 46
3 4 3 12
4 6 5 30
# 2.按照total列排序
df.sort_values(by=['total'])
Out[14]:
price weight total
3 4 3 12
4 6 5 30
2 2 23 46
0 6 12 72
1 4 43 172
# 3.按照多列排序
df.sort_values(by=['price','total'])
Out[13]:
price weight total
2 2 23 46
3 4 3 12
1 4 43 172
4 6 5 30
0 6 12 72
# 4.降序排列
df.sort_values(by=['price'], ascending=False)
Out[16]:
price weight total
0 6 12 72
4 6 5 30
1 4 43 172
3 4 3 12
2 2 23 46
# 5.替换原df
df.sort_values(by=['price'], ascending=False, inplace=True)
df # df已变为排序后的df
Out[18]:
price weight total
0 6 12 72
4 6 5 30
1 4 43 172
3 4 3 12
2 2 23 46
读取Json文件时:
import json
f = open("demo.json","r")
data = json.loads(f)
print(data)
报错:
TypeError: the JSON object must be str, bytes or bytearray, not TextIOWrapper
原因是,json中有四个方法:dumps、loads、dump和load
。dumps和loads是在内存中转换(python对象和json字符串之间的转换)
,而dump和load则是对应于文件的处理
。因此,open后的json文件内容需要读到内存中方可使用loads方法。因此可修改为:
import json
f = open("demo.json","r")
strs = f.read()
data = json.loads(strs)
print(data)
一次性读取多个csv文件,将数据合并的方法较多,这里提供一参考方法:
import os
import pandas as pd
csv_files = os.listdir(csv_dir)
# 创建一个空list,用来存放文件名
# 依次读取文件中的内容
data_list = []
for csv_file in csv_files:
df_tmp = pd.read_csv(os.path.join(csv_dir, csv_file), header=0)
data_list.append(df_tmp )
# 合并数据集
df_total = pd.concat(data_list, ignore_index=False)
笔者独自运营了微信公众号,用于分享个人学习及工作生活趣事,大家可以关注一波。(微信搜索“微思研”)