gpt4 book ai didi

Python:将两列分组在一起并找到第三列的总和

转载 作者:太空宇宙 更新时间:2023-11-03 20:59:40 25 4
gpt4 key购买 nike

对 Python 非常陌生,需要一些帮助来解决我必须完成的问题。

我需要根据用户输入的月份 (MM) 和年份 (YYYY) 找到每个时间段(月/年)的平均收入。

我的输入如下:

year_value = int(input("Year (YYYY): "))
month_value = int(input("Month (MM): "))

我的数据框如下所示:

Race_Course   Horse Name      Year   Month   Day   Amount_won_lost   Won/Lost
Aintree Red Rum 2017 5 12 11.58 won
Punchestown Camelot 2016 12 22 122.52 won
Sandown Beef of Salmon 2016 11 17 20.0 lost
Ayr Corbiere 2016 11 3 25.0 lost
Fairyhouse Red Rum 2016 12 2 65.75 won
Ayr Camelot 2017 3 11 12.05 won
Aintree Hurricane Fly 2017 5 12 11.58 won
Punchestown Beef or Salmon 2016 12 22 112.52 won
Sandown Aldaniti 2016 11 17 10.0 lost
etc.

我有两个问题:

  1. 如何根据输入将数据分组在一起并对匹配的 Amount_won_lost 值求和,以及
  2. 如何确保在将这些值相加时,当赢/输 = 输时,Amount_won_lost 中的值为负,而当赢/输 = 赢时,Amount_won_lost 中的值保持正值

任何帮助将不胜感激!我已经被这个问题困扰了几个小时,似乎无法弄清楚。

输出应该看起来像这样,但是任何打印结果的东西都是完美的,我不介意它的样子:

Year    Month    Amount_won_lost
2016 11 €-55.00

最佳答案

您可以首先使用 pd.DataFrame.apply() 更改 Amount_won_lost 属性的符号

因此对于以下行:

df["Amount_won_lost"] = df.apply(lambda x: -x["Amount_won_lost"] \
if x["Won/Lost"] == "lost" else x["Amount_won_lost"], axis = 1)

它会将您的 Amount_won_lost 列替换为正值或负值,具体取决于他们是赢了还是输了。

通过利用其他评论中提到的 sum() 函数,您可以获得给定年份和月份的 Amount_won_lost 总和。

以下命令将选择您输入的值中的所有值:

df[(df["Year"] == year_value) & (df["Month"] == month_value)]

输出如下:

  Race_Course       HorseName  Year  Month  Day  Amount_won_lost Won/Lost
2 Sandown Beef of Salmon 2016 11 17 -20.0 lost
3 Ayr Corbiere 2016 11 3 -25.0 lost
8 Sandown Aldaniti 2016 11 17 -10.0 lost

print(df[(df["年份"] == Year_value) & (df["Month"] == Month_value)]["Amount_won_lost"].sum())

将打印-55.0

如果您想查看一年中每个给定月份的总和,而不使用用户输入,groupby 函数是您最好的选择!

关于Python:将两列分组在一起并找到第三列的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55786258/

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