Python 计算字典中键的最频繁值

Python 计算字典中键的最频繁值,python,pandas,dictionary,count,Python,Pandas,Dictionary,Count,我有一个熊猫数据框,其中“items”列是一个字典,显示每笔交易购买了哪些产品: data = {'price':[40, 15, 10, 2], 'items': ["{'product': 'Product1', 'quantity': 4, 'product': 'Product2', 'quantity': 1}", "{'product': 'Product2', 'quantity': 1, 'product': 'Product3', 'qua

我有一个熊猫数据框,其中“items”列是一个字典,显示每笔交易购买了哪些产品:

data = {'price':[40, 15, 10, 2],
    'items': ["{'product': 'Product1', 'quantity': 4, 'product': 'Product2', 'quantity': 1}", "{'product': 'Product2', 'quantity': 1, 'product': 'Product3', 'quantity': 1,'product': 'Product1', 'quantity': 1}", "{'product': 'Product1', 'quantity': 4}", "{'product': 'Product3', 'quantity': 1, 'product': 'Product1', 'quantity': 1}"]
    }
df = pd.DataFrame (data, columns = ['price', 'items'])

我想知道哪些产品买得最多。在这种情况下,结果应该如下所示:

Product1: 4
Product2: 2

如何计算列“items”中键“product”的最频繁值?

也许您可以使用
命名的tuple
(来自内置的
集合
包)。 首先,定义一个名为Record的命名元组并创建以下列表:

from collections import namedtuple
import pandas as pd

Record = namedtuple('Record', 'price product quantity')

records = [
    Record(40, 'Product1', 4), Record(40, 'Product2', 1),
    Record(15, 'Product2', 1), Record(15, 'Product3', 1), Record(15, 'Product1', 1),
    Record(10, 'Product1', 4),
    Record( 2, 'Product3', 1), Record(2, 'Product1', 1),]
其次,创建数据框,并使用groupby计算每个产品的数量:

# create data frame
df = pd.DataFrame(records)

# compute summary statistic
df = df.groupby('product')['quantity'].sum()
print(df)

product
Product1    10
Product2     2
Product3     2
Name: quantity, dtype: int64

我没有达到你预期的结果。抱歉,如果我误解了您的数据和/或问题。

您的dict无效,因为复制的密钥即将这么说。这是
产品
数量
键的情况。我知道,有解决办法吗?