【发布时间】:2018-10-24 10:28:16
【问题描述】:
我有一个字典,其中包含产品名称和购买了这些商品的唯一客户电子邮件,如下所示:
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 字典,但我不确定您将如何挑选一个键来将其值与所有其他键进行比较等等,然后存储它。
【问题讨论】:
-
如果您的字典列表大小不等,您如何创建
customers? -
@cᴏʟᴅsᴘᴇᴇᴅ 您必须对其进行迭代并将值转换为熊猫系列。
customers = pd.DataFrame(dict([ (k,pd.Series(v)) for k,v in customer_emails.items() ])) -
哦...那好吧,我已经在我的回答中向您展示了一种更好的方法。
-
哇,这是一种更好的转换方式。非常感谢
标签: python pandas dictionary dataframe crosstab