python - Pandas 排序值

标签 python python-3.x pandas kaggle

在对 Kaggle 的 SF Salaries 数据集进行数据分析时 ( https://www.kaggle.com/kaggle/sf-salaries ), 我想知道加类费按照年份和职位的排名。

What I decided to get

我的解决方案是:

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

which turned out to be like this 。 显然,结果并没有如我所料。 除了索引之外,它似乎排序不正确,因为 173547.73 后面应该跟着 163477.81 等。 请帮忙。谢谢。

最佳答案

我不确定您是否意识到每一行对应于不同的员工。因此,当您执行 df = df[['Year','JobTitle','OvertimePay']].copy() 时,同一年会多次出现“Deputy Sheriff”,一次为每个员工。这种情况可能会发生多次,因为不同的员工具有相同的“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}))

关于python - Pandas 排序值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55189361/

相关文章:

python-3.x - 列表列到 Pandas 中的元组列

python - os.popen().read() - charmap 解码错误

python - 如果特定列范围内有任何缺失值,如何更新数据框中的列值?

python - 将日期转换为自纪元以来的 float

python - 编写全局配置文件的正确方法是什么?

python - 这是在 Pandas/Python 中更改日期的正确方法吗?

python - 在 agg 函数中使用一个属性聚合多列

python - Pandas 的特征交叉

python - Django 2、python 3.4 无法解码 urlsafe_base64_decode(uidb64)

python - 如何将 1 行输出更改为多行