Python按字母顺序排序数据框

时间:2017-04-13 21:20:59

标签: python pandas

我想按学生姓名重新排序数据框。 有人有什么建议吗?

df = pd.DataFrame({
        'student': [
            'monica', 'nathalia', 'anastasia', 'marina', 'ema'
        ],

    'grade' : ['excellent', 'excellent', 'good', 'very good', 'good'
    ]
    })

    print (df)

                student   grade

        0       monica    excellent        
        1       nathalia  excellent         
        2       anastasia good        
        3       marina    very good          
        4       ema       good 

5 个答案:

答案 0 :(得分:10)

大熊猫0.17:

# Sort by ascending student name
df.sort('student')
# reverse ascending
df.sort('student', ascending=False)

Pandas 0.17+(如其他答案中所述):

# ascending
df.sort_values('student')
# reverse ascending
df.sort_values('student', ascending=False)

答案 1 :(得分:2)

您可以使用sort_values方法对数据框进行排序。

df.sort_values('student')

答案 2 :(得分:2)

df.sort_values(by='student')

或者,如果你想先Z:

df.sort_values(by='student', ascending=False)

答案 3 :(得分:2)

pd.DataFrame.sort_values是显而易见的pandas选择

但是,您可以使用numpy并重建。这将为您带来适度的性能提升。

a = df.student.values.astype(str).argsort()
pd.DataFrame(df.values[a], df.index[a], df.columns)

       grade    student
2       good  anastasia
4       good        ema
3  very good     marina
0  excellent     monica
1  excellent   nathalia

测试小数据
enter image description here

测试更大的数据
enter image description here

答案 4 :(得分:2)

pandas 0.19.2

df.sort_values(by=['contig', 'pos'], ascending=True)

# where contig and pos are the column names. So, you may change for yours.

注意:如果您想要更新相同的数据帧,则使用inplace非常重要。大多数人对何时使用/不使用现场感到困惑。

如果您想制作新的数据框。

df_sorted = df.sort_values(by=['contig', 'pos'], inplace=False, ascending=True)