Сортировка по убыванию или возрастанию значений с плавающей запятой в массиве данных

Как сортировать по убыванию или возрастанию где число 1,023,222 считалось бы больше чем 200,333? А также если перед числом стоит $1,023,222?

Я попробовал сделать так:

price_list = []    
for index, row in top_us_2022.iterrows():
    price = str(row[3])
    price_n = price.replace('$', '').replace(',', '').replace('nan', '0')
    price_int = int(price_n)
    price_list.append(price_int)
price_list.sort()

Но как это сделать в рамках ВСЕЙ таблицы, а не одного столбца? (то есть сортировка по этому столбцу, читая всю таблицу)введите сюда описание изображения


Ответы (1 шт):

Автор решения: CrazyElf

Примерно так, как уже и подсказали в комментариях - заменой лишних символов:

import pandas as pd

df = pd.DataFrame({
    'Total Gross': [
        '$1,000,000',
        '$500,000',
        '$200'
    ],
    'Order': [
        1,
        2,
        3
    ]
})

df['for_sort'] = pd.to_numeric(df['Total Gross'].str.replace(r'[$,]', '', regex=True))
df.sort_values('for_sort')

Вывод:

index Total Gross Order for_sort
2 $200 3 200
1 $500,000 2 500000
0 $1,000,000 1 1000000

Я использовал to_numeric, потому что непонятно на выходе будут целые значения или с плавающей точкой, эта функция с обоими вариантами должна нормально справиться.

→ Ссылка