reindex, @Zero answer . (SORT_INDEX1), (SORT_INDEX2). (SORT_INDEX2) , (SORT_INDEX1) .
import pandas as pd
df = pd.DataFrame([['q', '1'],['a', '1'],['B', '1'],['C', '1'],
['q', '0'],['a', '0'],['B', '0'],['C', '0']])
SORT_INDEX1 = 1
SORT_INDEX2 = 0
df_default = df.sort_values(by=[SORT_INDEX1, SORT_INDEX2])
df_new = df.reindex(list(zip(*sorted(zip(df.index, df[SORT_INDEX2]), key=lambda t: t[1].lower())))[0])
.sort_values(by=SORT_INDEX1)
print('Original dataframe:')
print(df)
print('Default case-sensitive sort:')
print(df_default)
print('Case-insensitive sort:')
print(df_new)
:
Original dataframe:
0 1
0 q 1
1 a 1
2 B 1
3 C 1
4 q 0
5 a 0
6 B 0
7 C 0
Default case-sensitive sort:
0 1
6 B 0
7 C 0
5 a 0
4 q 0
2 B 1
3 C 1
1 a 1
0 q 1
Case-insensitive sort:
0 1
5 a 0
6 B 0
7 C 0
4 q 0
1 a 1
2 B 1
3 C 1
0 q 1
( )
EDIT: , . . , 2 .