I have a Dataframe that looks like this:
>>> import pandas >>> df = pandas.DataFrame({'region' : ['east', 'west', 'south', 'west', ... 'east', 'west', 'east', 'west'], ... 'item' : ['one', 'one', 'two', 'three', ... 'two', 'two', 'one', 'three'], ... 'quantity' : [3,3,4,5,12,14,3,8], "price" : [50,50,12,35,10,10,12,12]}) >>> df item price quantity region 0 one 50 3 east 1 one 50 3 west 2 two 12 4 south 3 three 35 5 west 4 two 10 12 east 5 two 10 14 west 6 one 12 3 east 7 three 12 8 west
and what I want to do is change the values ββin the quantity column. Each new quantity value is calculated based on the number of different regions that exist for this combination of rows, and the price. More specifically, I want to take each quantity and multiply it by the weight of its area, returned by the function I wrote, which takes a region and a list of another region that makes up the pool:
region_weight(region, list_of_regions) . For this imaginary situation, let's say:
- region east costs 1
- region west costs 2
- Cost south costs 3
Then the return weight of the east in the east basin, the west is 0.3333333333333333333 (1/3). The weight of the south in the east, west, south basin is 0.5 (1/2).
So, for the first line, we consider that the other lines have one point and a price of 50. There are 2 from the east and one from the western region. The new quantity in the first line will be: 3 * region_weight("east", ["east", "west"]) or 3 * 0.3333333333333333.
I want to apply the same process to the entire quantity column. I do not know how to approach this problem with the pandas library, except for scrolling the Dataframe row by row.