[英]Sort data within group - Pandas Dataframe
我有以下數據框:
As Comb Mu(+) Name Zone f´c
33 0.37 2 6.408225 Beam_13 Final 30.0
29 0.37 2 6.408225 Beam_13 Begin 30.0
31 0.94 2 16.408225 Beam_13 Middle 30.0
15 0.54 2 9.504839 Beam_7 Final 30.0
11 0.54 2 9.504839 Beam_7 Begin 30.0
13 1.12 2 19.504839 Beam_7 Middle 30.0
我需要按Name
排序數據,然后按組內的Zone
排序,如下面的預期輸出所示:
As Comb Mu(+) Name Zone f´c
11 0.54 2 9.504839 Beam_7 Begin 30.0
13 1.12 2 19.504839 Beam_7 Middle 30.0
15 0.54 2 9.504839 Beam_7 Final 30.0
29 0.37 2 6.408225 Beam_13 Begin 30.0
31 0.94 2 16.408225 Beam_13 Middle 30.0
33 0.37 2 6.408225 Beam_13 Final 30.0
我可以按索引排序,但不能按Name
組中的名稱和區域排序。 有任何想法嗎?
最干凈的方法是將Name
和Zone
列轉換為類別類型,指定類別和順序。
from io import StringIO
data = """
As,Comb,Mu(+),Name,Zone,f´c
33,0.37,2,6.408225,Beam_13,Final,30.0
29,0.37,2,6.408225,Beam_13,Begin,30.0
31,0.94,2,16.408225,Beam_13,Middle,30.0
15,0.54,2,9.504839,Beam_7,Final,30.0
11,0.54,2,9.504839,Beam_7,Begin,30.0
13,1.12,2,19.504839,Beam_7,Middle,30.0
"""
df = pd.read_csv(StringIO(data))
# convert Name and Zone to ordinal/category type
df.Name = df.Name.astype('category', categories=["Beam_7", "Beam_13"], ordered=True)
df.Zone = df.Zone.astype('category', categories=["Begin", "Middle", "Final"], ordered=True)
df.sort_values(by=['Name', 'Zone'])
這是輸出:
其他選項可以在這里找到
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.