Различные результаты при сортировке файла Excel с использованием pandas и pywin32 api - PullRequest
0 голосов
/ 17 сентября 2018

Я хочу отсортировать файл Excel, который содержит такие данные:

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

Если я использую панд, результаты, которые я получаю, используя df.sort_values или sort_index, равны

import pandas as pd

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

result = df.sort_index()

print(result)

Результат:

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

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() 

Я получаю данные как

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 тоже.

1 Ответ

0 голосов
/ 17 сентября 2018

Вам нужно отсортировать значения, используя нижний (преобразует строку в нижний регистр):

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)

выход

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...