繁体   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