В порядке возрастания строк Excel - PullRequest
0 голосов
/ 12 февраля 2019

У меня есть следующие строки в Excel:

enter image description here

Как я могу поместить их в порядке возрастания в Python (т.е. обратите внимание, какстрока, начинающаяся с 12, предшествует этому, начинающемуся с 118).

Я думаю, что библиотека Pandas будет отправной точкой?Любая подсказка приветствуется.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

Используя natsorted

from natsort import natsorted
df.data=natsorted(df.data)
df
Out[129]: 
         data
0   121.i.jpg
1   212.i.jpg
2   512.i.jpg
3  1212.i.jpg

Сохранить индекс исходных данных

df.loc[natsorted(df.index,key=lambda x : df.data[x] )]
Out[138]: 
         data
1   121.i.jpg
2   212.i.jpg
3   512.i.jpg
0  1212.i.jpg

Или используя argsort с split

df.iloc[np.argsort(df.data.str.split('.').str[0].astype(int))]
Out[141]: 
         data
1   121.i.jpg
2   212.i.jpg
3   512.i.jpg
0  1212.i.jpg
0 голосов
/ 12 февраля 2019

Сначала прочитайте файл Excel

df = pd.read_excel("your/file/path/file.xls")
df
         data   
0  1212.i.jpg  
1   121.i.jpg  
2   212.i.jpg  
3   512.i.jpg  

, затем создайте подстроку данных, предполагая, что имя столбца равно «data»

df["sub"] = df["data"].str[:-6]

На всякий случай, преобразуйте новый столбец ввведите int

df["sub"] = df["sub"].astype(int)

Теперь отсортируйте значения по этому новому столбцу

df.sort_values("sub", inplace=True)

Окончательно, если вам нужны только ваши исходные данные:

df = df["data"]


1     121.i.jpg
2     212.i.jpg
3     512.i.jpg
0    1212.i.jpg
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...