gpt4 book ai didi

python - 比较字典的值并返回匹配值的计数

转载 作者:太空狗 更新时间:2023-10-29 21:35:59 25 4
gpt4 key购买 nike

我有一个字典,其中包含产品名称和购买过这些商品的唯一客户电子邮件,如下所示:

customer_emails = {
'Backpack':['customer1@gmail.com','customer2@gmail.com','customer3@yahoo.com','customer4@msn.com'],
'Baseball Bat':['customer1@gmail.com','customer3@yahoo.com','customer5@gmail.com'],
'Gloves':['customer2@gmail.com','customer3@yahoo.com','customer4@msn.com']}

我正在尝试遍历每个键的值并确定有多少电子邮件在其他键中匹配。我将这本字典转换为 DataFrame,并使用类似这样的东西得到了我想要的单列比较答案

customers[customers['Baseball Bat'].notna() == True]['Baseball Bat'].isin(customers['Gloves']).sum()

我想要完成的是创建一个基本上看起来像这样的 DataFrame,以便我可以轻松地将它用于相关图表。

             Backpack  Baseball Bat    Gloves
Backpack 4 2 3
Baseball Bat 2 3 1
Gloves 3 1 3

我认为这样做的方法是遍历 customer_emails 字典,但我不确定您将如何挑选出一个键来将其值与所有其他键进行比较等等,然后存储它。

最佳答案

pd.DataFrame.from_dict开始:

df = pd.DataFrame.from_dict(customer_emails, orient='index').T

df
Backpack Baseball Bat Gloves
0 customer1@gmail.com customer1@gmail.com customer2@gmail.com
1 customer2@gmail.com customer3@yahoo.com customer3@yahoo.com
2 customer3@yahoo.com customer5@gmail.com customer4@msn.com
3 customer4@msn.com None None

现在,使用stack + get_dummies + sum + dot:

v = df.stack().str.get_dummies().sum(level=1)
v.dot(v.T)

Backpack Baseball Bat Gloves
Backpack 4 2 3
Baseball Bat 2 3 1
Gloves 3 1 3

或者,将 stack 切换为 melt 以获得一些额外的性能。

v = (df.melt()
.set_index('variable')['value']
.str.get_dummies()
.sum(level=0)
)
v.dot(v.T)

variable Backpack Baseball Bat Gloves
variable
Backpack 4 2 3
Baseball Bat 2 3 1
Gloves 3 1 3

关于python - 比较字典的值并返回匹配值的计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50335782/

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