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.
我有两个问题:
如何基于输入将数据分组在一起,并对匹配的Amount_won_lost值求和,以及
我如何确保在对值进行求和时,当Won / Lost =丢失时,Amount_won_lost中的值为负;当Won / Lost =赢得时,值保持为正
任何帮助将不胜感激!我已经坚持了几个小时,似乎无法弄清楚。
输出看起来应该是这样的,但是任何打印结果的东西都是完美的,我不在乎它的外观:
Year Month Amount_won_lost
2016 11 €-55.00
参考方案
您可以先使用Amount_won_lost
更改pd.DataFrame.apply()
属性的符号。
因此对于以下行:
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"] == year_value) & (df["Month"] == month_value)]["Amount_won_lost"].sum())
将打印-55.0
。
如果您希望在不使用用户输入的情况下查看一年中每个给定月份的总和,那么groupby
功能是您最好的选择!
我在Windows上使用Python 3和sqlite3。我正在开发一个使用数据库存储联系人的小型应用程序。我注意到,如果应用程序被强制关闭(通过错误或通过任务管理器结束),则会收到sqlite3错误(sqlite3.OperationalError:数据库已锁定)。我想这是因为在应用程序关闭之前,我没有正确关闭数据库连接。我已经试过了: connectio…
用大写字母拆分字符串,但忽略AAA Python Regex - python我的正则表达式:vendor = "MyNameIsJoe. I'mWorkerInAAAinc." ven = re.split(r'(?<=[a-z])[A-Z]|[A-Z](?=[a-z])', vendor) 以大写字母分割字符串,例如:'我的名字是乔。 I'mWorkerInAAAinc”变成…
如何在python中将从PDF提取的文本格式化为json - python我已经使用pyPDF2提取了一些文本格式的发票PDF。我想将此文本文件转换为仅包含重要关键字和令牌的json文件。输出应该是这样的:#PurchaseOrder {"doctype":"PO", "orderingcompany":"Demo Company", "su…
查找字符串中的行数 - python我正在创建一个python电影播放器/制作器,我想在多行字符串中找到行数。我想知道是否有任何内置函数或可以编写代码的函数来做到这一点:x = """ line1 line2 """ getLines(x) python大神给出的解决方案 如果换行符是'\n',则nlines …
Python pytz时区函数返回的时区为9分钟 - python由于某些原因,我无法从以下代码中找出原因:>>> from pytz import timezone >>> timezone('America/Chicago') 我得到:<DstTzInfo 'America/Chicago' LMT-1 day, 18:09:00 STD…