'pandas dataframe - groupby dataframe by datetime (last 12 months) and agreeing two columns, the answer to be like that ↓
Grouping the data frames by the month that are saved in the "date" field, and agreeing two columns, respectively "wealth_avg" and "state_money_avg"
recap: i expect an array with 12 objects, where each object has the number of months: 1 meaning January, 2 means February and so on, and "wealth_avg" that are the avg of the wealth and "state_money_avg" that are the avg of the state_money, all this being calculated from that dateframe grouped by month.
- months that are not in the data frame must be null/nan (doesn't matter which one, preferably null) when we return the result
simple code ex:
import pandas as pd
# intialise data of lists.
data = {
'name':['Tom', 'nick', 'krish', 'jack', 'alexander'],
'age':[20, 20, 20, 20, 20],
'date':["2002-01-02", "2002-12-10", "2002-01-01", "2002-
03-01", "2002-10-09"],
'wealth': [500, 100, 400, 200, 300],
'state_money': [100, 200, 300, 400, 500],
}
# Create DataFrame
df = pd.DataFrame(data)
# Print the output.
df
Solution 1:[1]
Assuming date column's type is datetime, you can extract months to a different column:
df["month"] = df["date"].dt.month
Then group by month column and find the averages:
df.groupby("month").agg(wealth_avg=("wealth", "mean"), state_money_avg=("state_money", "mean"))
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | yeyosef |


