Python 计算字典中键的最频繁值
我有一个熊猫数据框,其中“items”列是一个字典,显示每笔交易购买了哪些产品: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
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无效,因为复制的密钥即将这么说。这是
产品
和数量
键的情况。我知道,有解决办法吗?