Проблема:
Попытка отсортировать приведенный ниже фрейм данных для данных Excel (обратите внимание, что это небольшой образец набора из нескольких строк с информацией, которая может варьироваться от A# до Z#, за которой следует AA#). и т. д. (например, как будет выглядеть лист Excel) (#- варьируется от 0 до 100):
Ввод
"Pin No": ['J11', 'J1', 'A2', 'A11', 'A1', 'AA2', 'AB2'],
"Pin Name": ['pin1', 'pin2', 'pin3', 'pin4', 'pin5', 'pin6', 'pin7']
Требования к выходным данным:
Pin No Pin Name
A1 pin5
A2 pin3
A11 pin4
J1 pin2
J11 pin1
AA2 pin6
AB2 pin7
Попытка кода:
import pandas as pd
import re
# Initial DataFrame
def main():
df = pd.DataFrame({
"Pin No": ['J11', 'J1', 'A2', 'A11', 'A1', 'AA2', 'AB2'],
"Pin Name": ['pin1', 'pin2', 'pin3', 'pin4', 'pin5', 'pin6', 'pin7']
})
# Apply the split_pin function to the 'Pin No' column
df['Pin No Split'] = df['Pin No'].apply(split_pin)
# Sort based on alphabetic part first, then numeric part
df_sorted = df.sort_values(by=['Pin No Split'], key=lambda x: x.apply(lambda y: (y[0], y[1]))).drop(columns=['Pin No Split']).reset_index(drop=True)
# Display the sorted DataFrame
print(df_sorted)
# Function to split Pin No into alphabetic and numeric components
def split_pin(pin):
# Regex to split Pin No into alphabetic and numeric parts
match = re.match(r"([A-Za-z]+)(\d+)", pin)
print(match)
if match:
alphabetic_part = match.group(1)
print(alphabetic_part)
numeric_part = int(match.group(2)) # Convert numeric part to integer for sorting
print(numeric_part)
return (alphabetic_part, numeric_part)
else:
return (pin, 0)
Но я не могу правильно отсортировать. Я получаю вывод ниже, но не уверен, какая часть моего подхода неверна:
Pin No Pin Name
0 A1 pin5
1 A2 pin3
2 A11 pin4
3 AA2 pin6
4 AB2 pin7
5 J1 pin2
6 J11 pin
Подробнее здесь: https://stackoverflow.com/questions/791 ... characters
Сортировка данных по фреймам данных, содержащих смешанные буквенно-цифровые символы ⇐ Python
Программы на Python
1730961175
Anonymous
[b]Проблема:[/b]
Попытка отсортировать приведенный ниже фрейм данных для данных Excel (обратите внимание, что это небольшой образец набора из нескольких строк с информацией, которая может варьироваться от A# до Z#, за которой следует AA#). и т. д. (например, как будет выглядеть лист Excel) (#- варьируется от 0 до 100):
[b]Ввод[/b]
"Pin No": ['J11', 'J1', 'A2', 'A11', 'A1', 'AA2', 'AB2'],
"Pin Name": ['pin1', 'pin2', 'pin3', 'pin4', 'pin5', 'pin6', 'pin7']
[b]Требования к выходным данным:[/b]
Pin No Pin Name
A1 pin5
A2 pin3
A11 pin4
J1 pin2
J11 pin1
AA2 pin6
AB2 pin7
[b]Попытка кода:[/b]
import pandas as pd
import re
# Initial DataFrame
def main():
df = pd.DataFrame({
"Pin No": ['J11', 'J1', 'A2', 'A11', 'A1', 'AA2', 'AB2'],
"Pin Name": ['pin1', 'pin2', 'pin3', 'pin4', 'pin5', 'pin6', 'pin7']
})
# Apply the split_pin function to the 'Pin No' column
df['Pin No Split'] = df['Pin No'].apply(split_pin)
# Sort based on alphabetic part first, then numeric part
df_sorted = df.sort_values(by=['Pin No Split'], key=lambda x: x.apply(lambda y: (y[0], y[1]))).drop(columns=['Pin No Split']).reset_index(drop=True)
# Display the sorted DataFrame
print(df_sorted)
# Function to split Pin No into alphabetic and numeric components
def split_pin(pin):
# Regex to split Pin No into alphabetic and numeric parts
match = re.match(r"([A-Za-z]+)(\d+)", pin)
print(match)
if match:
alphabetic_part = match.group(1)
print(alphabetic_part)
numeric_part = int(match.group(2)) # Convert numeric part to integer for sorting
print(numeric_part)
return (alphabetic_part, numeric_part)
else:
return (pin, 0)
Но я не могу правильно отсортировать. Я получаю вывод ниже, но не уверен, какая часть моего подхода неверна:
Pin No Pin Name
0 A1 pin5
1 A2 pin3
2 A11 pin4
3 AA2 pin6
4 AB2 pin7
5 J1 pin2
6 J11 pin
Подробнее здесь: [url]https://stackoverflow.com/questions/79165235/dataframe-sorting-of-data-containing-mixed-alphanumeric-characters[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия