Python Forum
column grouping (sum)
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
column grouping (sum)
#3
Yes, there are functions to do it "more directly". Common way is to convert given dataframe to a "narrow" format, where column names become one variable, after that do some transformation and convert it back to a "wide" format, where content of one (or more) column gives new column names. It has some similarity with Excel pivot tables.

There is pandas.melt(), that can be used to convert dataframe from wide to narrow format, and .pivot() or.unstack() can be used to convert narrow to wide (there are other functions too).

Unfortunately even with those functions it could look rather ugly:
Output:
In [214]: data = {"state":["New York", "California"], "region":["New York", "Los Angeles"], "2001-01":[123,345], "2001-02":[343,132], "2001-03":[63,423], "2001-04":[393,42]} In [215]: df = pd.DataFrame(data, columns=["state", "region", "2001-01", "2001-02", "2001-03", "2001-04"]) In [216]: df Out[216]:         state       region  2001-01  2001-02  2001-03  2001-04 0    New York     New York      123      343       63      393 1  California  Los Angeles      345      132      423       42 In [217]: wide = df.drop(['state', 'region'], axis=1).reset_index()      ...: melted = pd.melt(wide, id_vars='index')      ...: melted.variable = melted.variable.apply(lambda x : "{}q{}".format(x[:4], (int(x[5:]) - 1) // 3 + 1))      ...: grouped = melted.groupby(['index','variable']).sum().unstack()      ...: grouped.columns = grouped.columns.get_level_values(1)      ...: df[['state', 'region']].join(grouped)      ...: Out[217]:         state       region  2001q1  2001q2 0    New York     New York     529     393 1  California  Los Angeles     900      42
In reality it is not so bad:
  • cut part to modify
  • convert it to narrow
  • aggregate
  • convert to wide
  • join with remaining part
Reply


Messages In This Thread
column grouping (sum) - by metalray - Mar-07-2017, 02:38 PM
RE: column grouping (sum) - by sparkz_alot - Mar-07-2017, 02:53 PM
RE: column grouping (sum) - by zivoni - Mar-07-2017, 07:15 PM

Possibly Related Threads…
Thread Author Replies Views Last Post
  Grouping Candidates with same name coolperson 4 3,058 Jul-12-2019, 07:38 PM
Last Post: coolperson
  unicode within a RE grouping bluefrog 2 3,101 Jun-09-2018, 09:06 AM
Last Post: snippsat

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020