JavaScript
x
8
1
df2 = pd.DataFrame({
2
"A": [26, 2, 3],
3
"B": [0, 7, 1],
4
"C": [7, 5, 4]
5
},
6
index=list('abc'))
7
df2
8
Output:
JavaScript
1
5
1
A B C
2
a 26 0 7
3
b 2 7 5
4
c 3 1 4
5
df2.sort_values(['B', 'A'], ascending=[False, True])
gives:
JavaScript
1
5
1
A B C
2
b 2 7 5
3
c 3 1 4
4
a 26 0 7
5
The column with indexes is now shuffled in new order, but I want it to be the same even after sorting. Parameter ignore_index
just sets indexes from 0
to n-1
. And the sort_index
function isn’t helpful too, because indexes can be not in lexicographical order.
Advertisement
Answer
Use dataframe constructor:
JavaScript
1
8
1
df2 = pd.DataFrame({
2
"A": [26, 2, 3],
3
"B": [0, 7, 1],
4
"C": [7, 5, 4]
5
},
6
index=list('abc'))
7
print(df2)
8
Output:
JavaScript
1
5
1
A B C
2
a 26 0 7
3
b 2 7 5
4
c 3 1 4
5
Create new dataframe with constructor:
JavaScript
1
4
1
df2 = pd.DataFrame(df2.sort_values(['B', 'A'], ascending=[False, True]).to_numpy(),
2
index=df2.index, columns=df2.columns)
3
print(df2)
4
Output:
JavaScript
1
5
1
A B C
2
a 2 7 5
3
b 3 1 4
4
c 26 0 7
5