I dont think I can solve it with groupby()
or agg()
like in these (Question1, Question2)'s.
I have a pandas.DataFrame
that has one identifier column (ID_Code
) and some information columns(information 1
and information 2
). I need to aggregate some of the identifiers. Meaning some have to be deleted and their information has to be added into specific other rows.
To illustrate my problem here is something I made up:
import pandas as pd
inp = [{'ID_Code':1,'information 1':list(x * 3 for x in range(2, 5)),'information 2':list(x / 3 for x in range(2, 5))},
{'ID_Code':2,'information 1':list(x * 0.5 for x in range(2, 5)),'information 2':list(x / 2 for x in range(2, 5))},
{'ID_Code':3,'information 1':list(x * 0.2 for x in range(25, 29)),'information 2':list(x / 1 for x in range(2, 5))},
{'ID_Code':4,'information 1':list(x * 0.001 for x in range(102, 105)),'information 2':list(x / 12 for x in range(2, 5))},
{'ID_Code':5,'information 1':list(x * 12 for x in range(15, 17)),'information 2':list(x / 24 for x in range(2, 5))},
{'ID_Code':6,'information 1':list(x * 42 for x in range(2, 9)),'information 2':list(x / 48 for x in range(2, 5))},
{'ID_Code':7,'information 1':list(x * 23 for x in range(1, 2)),'information 2':list(x / 96 for x in range(2, 5))},
{'ID_Code':8,'information 1':list(x * 7.8 for x in range(8, 11)),'information 2':list(x / 124 for x in range(2, 5))}]
df = pd.DataFrame(inp)
print(df)
Out:
ID_Code information 1 information 2
0 1 [6, 9, 12] [0.6666666666666666, 1.0, 1.3333333333333333]
1 2 [1.0, 1.5, 2.0] [1.0, 1.5, 2.0]
2 3 [5.0, 5.2, 5.4, 5.6000000000000005] [2.0, 3.0, 4.0]
3 4 [0.10200000000000001, 0.10300000000000001, 0.10400000000000001] [0.16666666666666666, 0.25, 0.3333333333333333]
4 5 [180, 192] [0.08333333333333333, 0.125, 0.16666666666666666]
5 6 [84, 126, 168, 210, 252, 294, 336] [0.041666666666666664, 0.0625, 0.08333333333333333]
6 7 [23] [0.041666666666666664, 0.0625, 0.08333333333333333]
7 8 [62.4, 70.2, 78.0] [0.016129032258064516, 0.024193548387096774, 0.03225806451612903]
What do I need to do, if I want to get rid of ID_Code = 1
and store it's information in ID_Code = 3
, and get rid of ID_Code = 5
and ID_Code = 7
and store that information in ID_Code = 2
, so that the DataFrame looks like this:
ID_Code information 1 information 2
0 2 [180, 192, 23, 1.0, 1.5, 2.0] [0.08333333333333333, 0.125, 0.16666666666666666, 0.041666666666666664, 0.0625, 0.08333333333333333, 1.0, 1.5, 2.0]
1 3 [6, 9, 12, 5.0, 5.2, 5.4, 5.6000000000000005] [2.0, 3.0, 4.0]
2 4 [0.10200000000000001, 0.10300000000000001, 0.10400000000000001] [0.6666666666666666, 1.0, 1.3333333333333333, 0.16666666666666666, 0.25, 0.3333333333333333]
3 6 [84, 126, 168, 210, 252, 294, 336] [0.041666666666666664, 0.0625, 0.08333333333333333]
4 8 [62.4, 70.2, 78.0] [0.016129032258064516, 0.024193548387096774, 0.03225806451612903]