python - 使用 Python 对 Worksheet 中的列进行排序
问题描述
在下面的程序中,我创建了一个工作簿,其中包含一个名为 sort 的工作表,其中我将单词放在一列中,将数字放在另一列中现在我已经成功输出了 .xlsxv 文件但我需要数字应该从降序到升序. 我不知道如何放置代码。
Code
=====
import csv
import xlsxwriter
import re
workbook = xlsxwriter.Workbook('wordsandnumbers.xlsx')
worksheet = workbook.add_worksheet('sort')
with open('sort.csv') as f:
reader = csv.reader(f)
alist = list(reader)
worksheet.write(2,0,'words')
worksheet.write(2,1,'Numbers')
newlist = []
for values in alist:
convstr = str(values)
convstr = convstr.split(",")
newlist.extend(convstr)
a=3
for i in range(3,10):
newlist[a] = re.sub('[^a-zA-Z]','',newlist[a])
worksheet.write(i,0,newlist[a].strip('['))
a=a+1
newlist[a] = re.sub('[^0-9]','',newlist[a])
int(newlist[a])
worksheet.write(i,1,newlist[a])
a=a+1
workbook.close()
我在 .xlsx 表中得到的输出是:
需要的输出:
(同一行数字中的对应词也要排序)
解决方案
我建议将您的原始 csv 作为数据框加载,然后按特定列对其进行排序。我在下面提供了一个完全可重现的示例来说明这一点。
出于演示目的,我制作了自己的 sort.csv 版本,然后使用 将其作为数据框读入pandas.read_csv
,然后使用pandas.DataFrame.sort_values
.
import pandas as pd
sort = open('sort.csv', 'w+')
sort.write('May, 5227\n')
sort.write('June, 417\n')
sort.write('Jan, 4\n')
sort.write('Feb, 424\n')
sort.write('Dec, 36\n')
sort.write('Mar, 4981\n')
sort.write('Apr, 3460\n')
sort.close()
df = pd.read_csv('sort.csv', names = ['words', 'Numbers'])
df = df.sort_values(['Numbers'], ascending=[False])
writer = pd.ExcelWriter('wordsandnumbers.xlsx', engine='xlsxwriter')
df.to_excel(writer, index=False, startrow=2)
writer.save()
输出的 sort.csv:
输出的 wordsandnumbers.xlsx:
推荐阅读
- python - TPOT:在 COLAB 中工作时,拟合后导出的最佳管道(.py 文件)在哪里
- javascript - VueFire 监视空数组属性
- java - 在 Spring 集成应用程序启动时意外 CryptoAPI 失败生成种子
- python - python中的方程和数学
- video - 使用 ffmpeg 生成单个 MPEG-Dash 片段
- oracle - 如何在 Oracle 12.1.0.2 中优化此查询?
- java - 不将工具栏连接到导航抽屉怎么办?
- indentation - 如何使用jspdf缩进多行段落的第一行
- c++ - 为 Visual Studio 代码下载 C++ 扩展时出错
- vector - 在地图中按键删除特定条目。std::unordered_map
> 议员;