【发布时间】:2020-07-15 18:06:27
【问题描述】:
我有以下数据框和列表。
d = ({
'Item' : ['a','a','a','b','b','b','b'],
'Count' : [0,1,2,3,4,5,6],
})
df = pd.DataFrame(data = d)
list_factor=[10,100] # a list of factors with same length as the unique Items in dataframe.
现在我想为每个项目,将计数乘以对应于该项目的 list_factor 元素。例如,a 中的所有计数都将乘以 10,b 中的所有计数都将乘以 100。所以最终的数据帧将如下所示:
'Item' : ['a','a','a','b','b','b','b'],
'Count' : [0,10,20,300,400,500,600],
我尝试使用 groupby 函数并对其应用乘法函数,但我只能对常量值执行此操作,而不是列表中的值。这是我所做的:
df.groupby('Item')['Count'].apply(lambda x : x*list_factor[?!])
这只是一个示例数据框以及我想要达到的内容。实际上,我有一个包含 1000 个不同项目的数据框,因此 list_factor 的长度为 1000。(数据框的总行数为 40000)
【问题讨论】:
-
究竟基于哪个逻辑?如果
Item中唯一值的数量和list_factor的长度不匹配怎么办? -
他们确实匹配。这是我的具体问题。假设您在因素列表中对每个项目都有一个特定因素。
标签: python-3.x pandas pandas-groupby