我想要一本以销售代理为键,净销售额为价值的字典。我不知道为什么这行不通。
NetSalesPerAgent_2015 = {}
for agent in pd.read_excel('VerkoopBrouwerij.xlsx',sheet_name='2015')['Agent Name']:
if agent not in NetSalesPerAgent_2015:
NetSalesPerAgent_2015[agent] = sum(list(pd.read_excel('VerkoopBrouwerij.xlsx', sheet_name='2015', index_col='Agent Name').loc[agent]['Net Sales']))
答案 0 :(得分:0)
首先,检查Excel工作表的“净销售额” 列中的值是否存在异常。
然后,一种避免Floating Point Arithmetic: Issues and Limitations陷阱的简单方法是将输入值乘以100、1000或10,000以除去小数,将它们传递给函数,然后将输出值除以相同的数字。
使用熊猫read_excel()
将Excel工作表读入数据框:
import pandas as pd
df = pd.read_excel('VerkoopBrouwerij.xlsx', sheet_name='2015')
使用mul()
乘以“净销售额” 值以除去小数点(例如10,000表示4个小数位):
df['Net Sales'] = df['Net Sales'].mul(10000)
使用groupby()
和sum()
创建每个'代理商名称' 的一系列'净销售额':
ser = df.groupby('Agent Name')['Net Sales'].sum()
使用div()
划分序列并取回小数:
ser = ser.div(10000)
使用to_dict()
将系列转换为字典:
NetSalesPerAgent_2015 = ser.to_dict()
使用的测试工作表:
代理商名称|净销售额
A | 10.5005
B | 20.6006
C |
30.7007
D | 40.8008
D | 10.5005
B | 20.6006
A | 30.7007
C | 40.8008
结果:
{'A': 41.2012, 'B': 41.2012, 'C': 71.5015, 'D': 51.3013}