Python 熊猫。如何在不更改索引的情况下对数据帧进行排序?

Python 熊猫。如何在不更改索引的情况下对数据帧进行排序?,python,pandas,Python,Pandas,输出: df2 = pd.DataFrame({ "A": [26, 2, 3], "B": [0, 7, 1], "C": [7, 5, 4] }, index=list('abc')) df2 df2 = pd.DataFrame({ "A": [26, 2, 3], "B": [0, 7, 1], "C": [7,

输出:

df2 = pd.DataFrame({
    "A": [26, 2, 3],
    "B": [0, 7, 1],
    "C": [7, 5, 4]
},
    index=list('abc'))
df2
df2 = pd.DataFrame({
    "A": [26, 2, 3],
    "B": [0, 7, 1],
    "C": [7, 5, 4]
},
    index=list('abc'))
print(df2)
df2 = pd.DataFrame(df2.sort_values(['B', 'A'], ascending=[False, True]).to_numpy(), 
                   index=df2.index, columns=df2.columns)
print(df2)
df2.sort_值['B','A'],升序=[False,True]给出:


带索引的列现在以新的顺序被洗牌,但我希望它在排序之后仍然是一样的。参数ignore_index只是将索引从0设置为n-1。而sort_index函数也没有帮助,因为索引不能按字典顺序排列。

您可以在排序后重新添加索引:

    A  B  C
b   2  7  5
c   3  1  4
a  26  0  7

您可以在排序后重新添加索引:

    A  B  C
b   2  7  5
c   3  1  4
a  26  0  7

使用数据帧构造函数:

df2 = df2.sort_values(['B', 'A'], ascending=[False, True]).reset_index(drop=True)
df2['index'] = ['a', 'b', 'c']
df2.set_index('index', inplace=True)

print(df2)

        A  B  C
index          
a       2  7  5
b       3  1  4
c      26  0  7
    A  B  C
a  26  0  7
b   2  7  5
c   3  1  4
输出:

df2 = pd.DataFrame({
    "A": [26, 2, 3],
    "B": [0, 7, 1],
    "C": [7, 5, 4]
},
    index=list('abc'))
df2
df2 = pd.DataFrame({
    "A": [26, 2, 3],
    "B": [0, 7, 1],
    "C": [7, 5, 4]
},
    index=list('abc'))
print(df2)
df2 = pd.DataFrame(df2.sort_values(['B', 'A'], ascending=[False, True]).to_numpy(), 
                   index=df2.index, columns=df2.columns)
print(df2)
使用构造函数创建新的数据帧:

df2 = df2.sort_values(['B', 'A'], ascending=[False, True]).reset_index(drop=True)
df2['index'] = ['a', 'b', 'c']
df2.set_index('index', inplace=True)

print(df2)

        A  B  C
index          
a       2  7  5
b       3  1  4
c      26  0  7
    A  B  C
a  26  0  7
b   2  7  5
c   3  1  4
输出:

df2 = pd.DataFrame({
    "A": [26, 2, 3],
    "B": [0, 7, 1],
    "C": [7, 5, 4]
},
    index=list('abc'))
df2
df2 = pd.DataFrame({
    "A": [26, 2, 3],
    "B": [0, 7, 1],
    "C": [7, 5, 4]
},
    index=list('abc'))
print(df2)
df2 = pd.DataFrame(df2.sort_values(['B', 'A'], ascending=[False, True]).to_numpy(), 
                   index=df2.index, columns=df2.columns)
print(df2)

使用数据帧构造函数:

df2 = df2.sort_values(['B', 'A'], ascending=[False, True]).reset_index(drop=True)
df2['index'] = ['a', 'b', 'c']
df2.set_index('index', inplace=True)

print(df2)

        A  B  C
index          
a       2  7  5
b       3  1  4
c      26  0  7
    A  B  C
a  26  0  7
b   2  7  5
c   3  1  4
输出:

df2 = pd.DataFrame({
    "A": [26, 2, 3],
    "B": [0, 7, 1],
    "C": [7, 5, 4]
},
    index=list('abc'))
df2
df2 = pd.DataFrame({
    "A": [26, 2, 3],
    "B": [0, 7, 1],
    "C": [7, 5, 4]
},
    index=list('abc'))
print(df2)
df2 = pd.DataFrame(df2.sort_values(['B', 'A'], ascending=[False, True]).to_numpy(), 
                   index=df2.index, columns=df2.columns)
print(df2)
使用构造函数创建新的数据帧:

df2 = df2.sort_values(['B', 'A'], ascending=[False, True]).reset_index(drop=True)
df2['index'] = ['a', 'b', 'c']
df2.set_index('index', inplace=True)

print(df2)

        A  B  C
index          
a       2  7  5
b       3  1  4
c      26  0  7
    A  B  C
a  26  0  7
b   2  7  5
c   3  1  4
输出:

df2 = pd.DataFrame({
    "A": [26, 2, 3],
    "B": [0, 7, 1],
    "C": [7, 5, 4]
},
    index=list('abc'))
df2
df2 = pd.DataFrame({
    "A": [26, 2, 3],
    "B": [0, 7, 1],
    "C": [7, 5, 4]
},
    index=list('abc'))
print(df2)
df2 = pd.DataFrame(df2.sort_values(['B', 'A'], ascending=[False, True]).to_numpy(), 
                   index=df2.index, columns=df2.columns)
print(df2)

它不是随机的。排序后它保留了行索引。正确,我的措辞很糟糕。它不是随机洗牌的。排序后它保留了行索引。正确,我的措辞很糟糕。