gpt4 book ai didi

python - 如何识别元组/3项元组列表的 "keys"?

转载 作者:行者123 更新时间:2023-12-01 04:38:47 25 4
gpt4 key购买 nike

给定收入值表:

enter image description here

需要注意的一个关键点(也是我问题的核心)是品牌名称几乎总是(但并非总是)包含相应的产品名称。在最后一个 Banana 条目中,情况并非如此。

我将提取品牌<->收入对的字典,首先考虑那些具有多个条目的品牌,并在这些情况下使用所描述的方法进行求和here 。所以:

revenuePerBrandDict = {}
brandRevenueTuples = []
i=0
for brand in ourTab.columns[1][1:-1]: # ignore first (zeroth) and last row
brandRevenueTuples.append((campaign.value, round(ourTab.columns[3][i].value,2)))
i+=1
for key, value in brandRevenueTuples:
revenuePerBrandDict[key] = revenuePerBrandDict.get(key, 0) + value

然后,我将将此字典中的键和值交叉引用到每个字典(香蕉费用的字典,猕猴桃费用的字典等),并减去收入中的支出,逐项计算。这些字典将从香蕉表、猕猴桃表等中提取,如下所示:

enter image description here

如果品牌名称​​始终包含收入表中的产品名称,那么为了编译适当的收入值集合以与香蕉费用字典进行比较,例如,我只需提取所有名称中包含“Banana”的品牌,为了匹配 Banana 费用字典中的键,请对其值进行提取。

但事实并非如此,所以我需要另一种方式来知道在 Revenue 字典中,“OtherBrand”是一个 Banana。(在 Banana 字典中,我已经知道它是香蕉,因为它来自香蕉 table )。我可以提取((产品、品牌、收入)的元组)的列表或元组,而不是提取品牌 <-> 收入对的 dict,现在我们有了由产品列。但由于元组没有键的概念,我如何迭代这个新集合,以所需的方式提取每个元组的收入(即认识到 OtherBrand 是香蕉等。 )

最佳答案

您可以使用水果作为键并对品牌进行分组:

from collections import defaultdict
import csv

with open("in.csv") as f:
r = csv.reader(f)
next(r) # skip header
# fruite will be keys, values will be dicts
# with brands as keys and running totals for rev as values
d = defaultdict(lambda: defaultdict(int))
for fruit, brand, rev in r:
d[fruit][brand] += float(rev)

使用您的输入输出:

from pprint import pprint as pp

pp(dict(d))
{'Apple': defaultdict(<type 'int'>, {'CrunchApple': 1.7}),
'Banana': defaultdict(<type 'int'>, {'BananaBrand': 4.0, 'OtherBrand': 3.2}),
'Kiwi': defaultdict(<type 'int'>, {'NZKiwi': 1.2}),
'Pear': defaultdict(<type 'int'>, {'PearShaped': 6.2})

然后您可以使用按键减去费用。

使用pandas生活变得更加容易,您可以进行分组和求和:

import pandas as pd

df = pd.read_csv("in.csv")

print(df.groupby(("A","B")).sum())

输出:

A      B               
Apple CrunchApple 1.7
Banana BananaBrand 4.0
OtherBrand 3.2
Kiwi NZKiwi 1.2
Pear PearShaped 6.2

或者按水果和品牌获取分组:

groups = df.groupby(["A","B"])

print(groups.get_group(('Banana', 'OtherBrand')))

print(groups.get_group(('Banana', 'BananaBrand')))

关于python - 如何识别元组/3项元组列表的 "keys"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31214051/

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