簡體   English   中英

熊貓sort_values

[英]Pandas sort_values

在從Kaggle( https://www.kaggle.com/kaggle/sf-salaries )對SF Salaries數據集進行數據分析時,我想知道根據Year和JobTitle得出的加班費排名。

我決定得到什么

我的解決方案是:

df = df[['Year','JobTitle','OvertimePay']].copy()
df2 = df.sort_values('OvertimePay', ascending= False)

原來是這樣的 顯然,結果沒有達到我的預期。 除索引外,它似乎排序不當,因為173547.73后應跟163477.81,等等。請提供幫助。 謝謝。

我不確定您是否意識到每一行都對應一個不同的Employee。 因此,當您執行df = df[['Year','JobTitle','OvertimePay']].copy() ,同一年中會多次出現“副警長”,每位員工一名。 這可能會發生多次,因為有不同的員工具有相同的“ JobTitle”。

為了實現您想要的目標,您可以drop_duplicates並只獲取​​“年度”中每個“職位”的高薪員工。 但是,我建議您分析一下這是否是您真正想要的。

這是我要使用的代碼:

import numpy as np
import pandas as pd

df = pd.read_csv('Salaries.csv')
df['OvertimePay'] = df['OvertimePay'].replace("Not Provided",np.nan).astype(float)
df = df[['Year','JobTitle','OvertimePay']].copy()
df.drop_duplicates(subset=['Year','JobTitle'])
df2 = df.sort_values('OvertimePay', ascending= False)

編輯:要更改格式,我將使用類似:

print(df2.iloc[0:20,].to_string(header=['Year','JobTitle',''],index=False,justify='left',
                                formatters={'JobTitle':'{{:<{}s}}'.format(df2['JobTitle'].str.len().max()).format}))

暫無
暫無

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

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