[英]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.