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