[英]Python: Group two columns together and find sum of third column
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.
我有兩個問題:
任何幫助將不勝感激! 我已經堅持了幾個小時,似乎無法弄清楚。
輸出應該看起來像這樣,但是任何可以打印結果的東西都是完美的,我不在乎它的外觀:
Year Month Amount_won_lost
2016 11 €-55.00
請嘗試這個
by_year = race_data[race_data['Year']==year_value ]
by_month = by_year[by_year['Month']==year_value ]
print(by_month['Amount_won_lost'].sum())
我希望它會有所幫助
ps:數據是一個熊貓DataFrame
您可以先使用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"] == year_value) & (df["Month"] == month_value)]["Amount_won_lost"].sum())
將打印-55.0
。
如果您希望在不使用用戶輸入的情況下查看一年中每個給定月份的總和,那么groupby
功能是您最好的選擇!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.