簡體   English   中英

對組內的數據進行排序 - Pandas Dataframe

[英]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組中的名稱和區域排序。 有任何想法嗎?

最干凈的方法是將NameZone列轉換為類別類型,指定類別和順序。

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.

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