【发布时间】:2013-01-20 21:55:59
【问题描述】:
我有一个如下所示的数据框:
>>> 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
我想要做的是修改数量列中的值。每个新的数量值都是根据该行的项目和价格组合存在的不同区域的数量来计算的。更具体地说,我想将每个数量乘以我编写的函数返回的区域权重,该函数采用区域和组成池的其他区域的列表:
region_weight(region, list_of_regions)。对于这种想象的情况,让我们说:
- 区域东值1
- 区域西值 2
- 南值值 3
那么在东、西池中东的返回权重为 0.3333333333333333(1/3)。池东、西、南中南的权重为0.5(1/2)。
所以对于第一行,我们看看还有哪些其他行是商品 1 和价格 50。有 2 行与东部和西部地区。第一行中的新数量为:3 * region_weight("east", ["east", "west"]) 或 3 * 0.3333333333333333。
我想对整个数量列应用相同的过程。除了逐行循环遍历 Dataframe 之外,我不知道如何使用 pandas 库来解决这个问题。
【问题讨论】: