从DataFrame,Pandas,Python创建字典

时间:2015-08-06 05:51:27

标签: python dictionary pandas

我想创建一个字典,其中键是状态名称,值是与状态对应的所有计数的总和。

dataFrame的示例

State         Count
California    100
Colorado      100
California    54
Colorado      9254

我试图使用以下内容,但不知道如何在其中包含sum函数,也不确定我是否应该在这里使用zip方法:

df_dict = dict(zip(df.State, df.Count))
print df_dict

2 个答案:

答案 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(),从而为您提供相同的结果。