วิธีจัดเรียงดาต้าดาต้าเฟรมของแพนด้าหนึ่งคอลัมน์


237

ฉันมีกรอบข้อมูลเช่นนี้:

print(df)

        0          1     2
0   354.7      April   4.0
1    55.4     August   8.0
2   176.5   December  12.0
3    95.5   February   2.0
4    85.6    January   1.0
5     152       July   7.0
6   238.7       June   6.0
7   104.8      March   3.0
8   283.5        May   5.0
9   278.8   November  11.0
10  249.6    October  10.0
11  212.7  September   9.0

อย่างที่คุณเห็นเดือนไม่ได้เรียงตามปฏิทิน ดังนั้นฉันจึงสร้างคอลัมน์ที่สองเพื่อรับหมายเลขเดือนที่สอดคล้องกับแต่ละเดือน (1-12) จากตรงนั้นฉันจะเรียงลำดับข้อมูลนี้ตามคำสั่งของเดือนปฏิทินได้อย่างไร

คำตอบ:


326

ใช้sort_valuesเพื่อเรียงลำดับ df ตามค่าของคอลัมน์เฉพาะ:

In [18]:
df.sort_values('2')

Out[18]:
        0          1     2
4    85.6    January   1.0
3    95.5   February   2.0
7   104.8      March   3.0
0   354.7      April   4.0
8   283.5        May   5.0
6   238.7       June   6.0
5   152.0       July   7.0
1    55.4     August   8.0
11  212.7  September   9.0
10  249.6    October  10.0
9   278.8   November  11.0
2   176.5   December  12.0

หากคุณต้องการเรียงลำดับตามสองคอลัมน์ให้ส่งรายการของป้ายชื่อคอลัมน์sort_valuesพร้อมกับป้ายชื่อคอลัมน์ที่เรียงลำดับตามลำดับความสำคัญในการจัดเรียง ถ้าคุณใช้df.sort_values(['2', '0'])ผลที่ได้จะถูกจัดเรียงตามคอลัมน์แล้วคอลัมน์2 0จริงอยู่สิ่งนี้ไม่สมเหตุสมผลสำหรับตัวอย่างนี้เพราะแต่ละค่าในdf['2']นั้นไม่ซ้ำกัน


75

ฉันลองวิธีแก้ปัญหาด้านบนและไม่ได้ผลลัพธ์ดังนั้นฉันจึงพบวิธีแก้ไขปัญหาที่เหมาะกับฉัน จากน้อยไปมาก = falseคือการสั่งซื้อ dataframe ในลงมาสั่งซื้อโดยค่าเริ่มต้นมันเป็นความจริง ฉันใช้ python 3.6.6 และ pandas 0.23.4 เวอร์ชั่น

final_df = df.sort_values(by=['2'], ascending=False)

ท่านสามารถดูรายละเอียดเพิ่มเติมในเอกสารประกอบของหมีแพนด้าที่นี่


9

เพียงเพิ่มการดำเนินการเพิ่มเติมเกี่ยวกับข้อมูล สมมติว่าเรามี dataframe dfเราสามารถดำเนินการหลายอย่างเพื่อให้ได้ผลลัพธ์ที่ต้องการ

ID         cost      tax    label
1       216590      1600    test      
2       523213      1800    test 
3          250      1500    experiment

(df['label'].value_counts().to_frame().reset_index()).sort_values('label', ascending=False)

จะให้sortedผลลัพธ์ของฉลากเป็นdataframe

    index   label
0   test        2
1   experiment  1

7

เช่นเดียวกับโซลูชันอื่น:

คุณสามารถจัดหมวดหมู่ข้อมูลสตริงของคุณ (ชื่อเดือน) และเรียงลำดับตามสิ่งนี้:

df.rename(columns={1:'month'},inplace=True)
df['month'] = pd.Categorical(df['month'],categories=['December','November','October','September','August','July','June','May','April','March','February','January'],ordered=True)
df = df.sort_values('month',ascending=False)

มันจะให้ข้อมูลที่สั่งซื้อโดยmonth nameตามที่คุณระบุในขณะที่สร้างCategoricalวัตถุ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.