Code:
df = pd.DataFrame([
[2010, 'Apple', 10],
[2011, 'Apple', 20],
[2010, 'Banans', 50],
[2011, 'Banans', 30]
], columns=['year', 'fruit', 'sales'])
print(df)
df.groupby(['fruit']).agg({'year': ['min', 'max'], 'sales': ['min', 'max']})
Output:
original df
year fruit sales
0 2010 Apple 10
1 2011 Apple 20
2 2010 Banans 50
3 2011 Banans 30
new_df
year sales
min max min max
fruit
Apple 2010 2011 10 20
Banans 2010 2011 30 50
What I want is like:
fruit min_year sales_2010 max_year sales_2011
0 Apple 2010 10 2011 20
1 Banans 2010 50 2011 30
Note, it's not a naming issue here. sales_2010 is 50, not the min value which is 30.