首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用pandas和pywin32 api对Excel文件进行排序时的不同结果

使用pandas和pywin32 api对Excel文件进行排序时的不同结果
EN

Stack Overflow用户
提问于 2018-09-17 17:37:06
回答 1查看 96关注 0票数 0

我想对包含如下数据的excel文件进行排序:

代码语言:javascript
复制
1.jpg
CC Library - Screen for proxy.png
aAd.ai
aaa.PSD
automation_35.jpg
automation_36.jpg
automation_37.jpg
automation_371.jpg
sad.psd
sde-Recovered.ai
sde-Recovered.psd
sde-Recovered1.psd
testfile.ai
testfile.psd
vpTestID (5)as.indd
wulogo15117.jpg

如果我使用pandas,我使用df.sort_valuessort_index得到的结果是

代码语言:javascript
复制
import pandas as pd

df=pd.read_excel('data.xlsx',sheet_name='Sheet1')

result = df.sort_index()

print(result)

结果是:

代码语言:javascript
复制
1.jpg
CC Library - Screen for proxy.png
aAd.ai
aaa.PSD
automation_35.jpg
automation_36.jpg
automation_37.jpg
automation_371.jpg
sad.psd
sde-Recovered.ai
sde-Recovered.psd
sde-Recovered1.psd
testfile.ai
testfile.psd
vpTestID (5)as.indd
wulogo15117.jpg
wulogo15117.jpg

但是如果我使用win32api

代码语言:javascript
复制
import win32com.client

excel = win32com.client.Dispatch("Excel.Application")

wb = excel.Workbooks.Open('data.xlsx')
ws = wb.Worksheets('Sheet1')

ws.Range('A1:A100').Sort(Key1=ws.Range('A1'), Order1=1, Orientation=1)

wb.Save()
excel.Application.Quit() 

我得到的数据如下

代码语言:javascript
复制
1.jpg
aaa.PSD
aAd.ai
automation_35.jpg
automation_36.jpg
automation_37.jpg
automation_371.jpg
CC Library - Screen for proxy.png
sad.psd
sde-Recovered.ai
sde-Recovered.psd
sde-Recovered1.psd
testfile.ai
testfile.psd
vpTestID (5)as.indd
wulogo15117.jpg

我想要以这种( win32api给出的方式)格式的数据进行比较。这在Windows机上可以工作,但在Mac机上会失败,因为它没有win32api。

有没有人可以帮我在Mac上获得相同格式的数据。

EN

回答 1

Stack Overflow用户

发布于 2018-09-17 17:52:18

您需要使用lower对值进行排序(将字符串转换为小写):

代码语言:javascript
复制
import pandas as pd

lst = ['1.jpg',
       'aAd.ai',
       'CC Library - Screen for proxy.png',
       'aaa.PSD',
       'automation_35.jpg',
       'automation_36.jpg',
       'automation_37.jpg',
       'automation_371.jpg',
       'sad.psd',
       'sde-Recovered.ai',
       'sde-Recovered.psd',
       'sde-Recovered1.psd',
       'testfile.ai',
       'testfile.psd',
       'vpTestID (5)as.indd',
       'wulogo15117.jpg']

series = pd.Series(data=sorted(lst, key=lambda e: e.lower()))
print(series)

输出

代码语言:javascript
复制
0                                 1.jpg
1                               aaa.PSD
2                                aAd.ai
3                     automation_35.jpg
4                     automation_36.jpg
5                     automation_37.jpg
6                    automation_371.jpg
7     CC Library - Screen for proxy.png
8                               sad.psd
9                      sde-Recovered.ai
10                    sde-Recovered.psd
11                   sde-Recovered1.psd
12                          testfile.ai
13                         testfile.psd
14                  vpTestID (5)as.indd
15                      wulogo15117.jpg
dtype: object
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52364751

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档