gpt4 book ai didi

python-3.x - 将每个组乘以 python groupby 中列表中的特定值

转载 作者:行者123 更新时间:2023-12-02 02:45:08 25 4
gpt4 key购买 nike

我有以下数据框和列表。

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)

最佳答案

您可以使用factorize来提取Item的顺序,然后使用numpy索引来传播因子:

factors = np.array(list_factor)[df.Item.factorize()[0]]

df['Count'] *= factors

输出:

  Item  Count
0 a 0
1 a 10
2 a 20
3 b 300
4 b 400
5 b 500
6 b 600

关于python-3.x - 将每个组乘以 python groupby 中列表中的特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62921180/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com