我想按学生姓名重新排序数据框。 有人有什么建议吗?
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
答案 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
答案 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)