gpt4 book ai didi

python - 计算第一次出现和个体出现之间的差异(Python Pandas)

转载 作者:行者123 更新时间:2023-12-04 02:26:46 24 4
gpt4 key购买 nike

让我们以一个简单的 HR 数据框为例:

<表类="s-表"><头>名称年份部门工资新列: hit100after<正文>约翰2018研发80 0玛丽2018合法90 0吉尔2018合法100 0约翰2019研发85 0玛丽2019合法95 0吉尔2019合法105 1约翰2020研发90 0玛丽2020合法100 2吉尔2020合法110 2

问题:在同一部门的第一个人达到该数字后,任何数据集达到工资 >= 100 需要多少时间(以年为单位)? (请参阅新列“hit100after”)

我实际上正在为实现而苦苦挣扎。我的步骤是按部门分组,找到第一次出现的 salary >= 100 并用新的 bool 类型或第二个数据框标记那一年。然后我会计算 >= 100 的个人与其部门中第一次出现之间的差异。

知道如何为大型数据框编写代码吗?

最佳答案

您可以 groupby() Department 并找到 Year.min() 其中 Salary >= 100:

first100 = df.groupby('Department').apply(
lambda g: g[g.Salary >= 100].Year.min())

# Department
# Legal 2018.0
# R&D NaN
# dtype: float64

然后 map()那些 first100 年按 Department 并从 Year 中减去。结果在Result中进行比较:

df['Result'] = df.Year - df.Department.map(first100)
df.loc[df.Salary < 100, 'Result'] = 0

# Name Year Department Salary Hit100after Result
# 0 John 2018 R&D 80 0 0.0
# 1 Marie 2018 Legal 90 0 0.0
# 2 Jill 2018 Legal 100 0 0.0
# 3 John 2019 R&D 85 0 0.0
# 4 Marie 2019 Legal 95 0 0.0
# 5 Jill 2019 Legal 105 1 1.0
# 6 John 2020 R&D 90 0 0.0
# 7 Marie 2020 Legal 100 2 2.0
# 8 Jill 2020 Legal 110 2 2.0

当前答案的时间

<表类="s-表"><头>方法 %timeit 有 100 万行<正文>这个答案每个循环 3.07 毫秒 ± 23.1 µs(7 次运行的平均值 ± 标准偏差,每次 100 次循环) query() 答案每个循环 4.33 毫秒 ± 354 µs(7 次运行的平均值 ± 标准差,每次 100 次循环)

关于python - 计算第一次出现和个体出现之间的差异(Python Pandas),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67017775/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com