我想创建一个字典,其中键是状态名称,值是与状态对应的所有计数的总和。
dataFrame的示例
State Count
California 100
Colorado 100
California 54
Colorado 9254
我试图使用以下内容,但不知道如何在其中包含sum函数,也不确定我是否应该在这里使用zip方法:
df_dict = dict(zip(df.State, df.Count))
print df_dict
答案 0 :(得分:1)
这将无法正常工作,因为dict
构造函数将替换每个state
的值,而不是求和。这不是一个单行,但是:
from collections import Counter
df_dict = Counter()
for state, count in zip(df.State, df.Count):
df_dict[state] += count
将为您提供总计数,Counter类具有一些可能对计数字典有用的额外功能。
答案 1 :(得分:1)
在数据框中按组计算总和,然后选择'Count'
列并使用to_dict()
将生成的系列转换为字典:
df_dict = df.groupby('State').agg('sum')['Count'].to_dict()
print df_dict
如果df中的列数多于您可能想要的那两列
df[['State','Count']].groupby('State').agg('sum')['Count'].to_dict()
避免计算所有列的总和。
编辑:
正如EdChum建议的那样,.agg('sum')
可以缩短为.sum()
,从而为您提供相同的结果。