簡體   English   中英

Python 按字母順序訂購 dataframe

[英]Python order dataframe alphabetically

我想按學生姓名重新排序 dataframe。 有人有什么建議嗎?

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.17:

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

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

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

您可以使用sort_values方法對數據sort_values進行排序。

df.sort_values('student')

嘗試

df.sort_values(by='student')

或者,如果你想要Z先:

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

pd.DataFrame.sort_values是明顯的pandas選擇

但是,您可以使用numpy和reconstruct。 這將為您帶來適度的性能提升。

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

測試小數據
在此輸入圖像描述

測試更大的數據
在此輸入圖像描述

大熊貓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)

如果您正在讀取 csv 文件,則可以執行類似的操作。

df.sort_values(by=['student'])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM