Сортировка данных по фреймам данных, содержащих смешанные буквенно-цифровые символыPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Сортировка данных по фреймам данных, содержащих смешанные буквенно-цифровые символы

Сообщение Anonymous »

Проблема:
Попытка отсортировать приведенный ниже фрейм данных для данных 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»