У меня есть df с 6000 столбцами, одно подмножество (1500 столбцов) имеет неправильные обратные имена столбцов.
Я могу вытащить подмножество так:
orderbook.loc[:,'ask_price_1500':'ask_price_1'].columns
и получить cols:
Index(['ask_price_1500', 'ask_price_1499', 'ask_price_1498', 'ask_price_1497',
'ask_price_1496', 'ask_price_1495', 'ask_price_1494', 'ask_price_1493',
'ask_price_1492', 'ask_price_1491',
...
'ask_price_10', 'ask_price_9', 'ask_price_8', 'ask_price_7',
'ask_price_6', 'ask_price_5', 'ask_price_4', 'ask_price_3',
'ask_price_2', 'ask_price_1'],
dtype='object', length=1500)
Теперь реверсирование столбцов довольно легко, я могу просто добавить [::-1]
чтобы получить новый порядок.
Index(['ask_price_1', 'ask_price_2', 'ask_price_3', 'ask_price_4',
'ask_price_5', 'ask_price_6', 'ask_price_7', 'ask_price_8',
'ask_price_9', 'ask_price_10',
...
'ask_price_1491', 'ask_price_1492', 'ask_price_1493', 'ask_price_1494',
'ask_price_1495', 'ask_price_1496', 'ask_price_1497', 'ask_price_1498',
'ask_price_1499', 'ask_price_1500'],
dtype='object', length=1500)
Однако при попытке присвоить эти обратные столбцы
orderbook.loc[:,'ask_price_1500':'ask_price_1'].columns = orderbook.loc[:,'ask_price_1500':'ask_price_1'].columns[::-1]
он не действует, и имена столбцов не изменяются.
Любая помощь приветствуется - спасибо.
Сделайте небольшую перестановку подписок и переназначение:
v = orderbook.columns.tolist()
# The index that comes first.
i = orderbook.columns.get_loc('ask_price_1500')
# The index that comes second.
j = orderbook.columns.get_loc('ask_price_1')
# Reverse list subslice.
v[i:j+1] = v[j:i-1:-1]
# Assign the result back to the DataFrame.
df.columns = v