我从一个大型数据框开始。我削减并重新安排了一些专栏。我保存的最后一个(相当大的)数据帧的头部看起来像这样:
# bsa_mod = 'best supporting actress modified' dataframe
[1] bsa_mod = bsa_mod[['Year', 'Name', 'Winner']]
[2] bsa_mod.head()
Year Name Winner
431 1936 Beulah Bondi 0.0
432 1936 Alice Brady 0.0
433 1936 Bonita Granville 0.0
434 1936 Maria Ouspenskaya 0.0
435 1936 Gale Sondergaard 1.0
我需要将所有名称组合在一起,并计算每个名称旁边的虚拟变量。例如,Agnes Morehead会在“名称”列中出现4次,并且每次都会在其名称旁边显示0或1,因此最终摘要表应显示“Agnes Morehead 4”。我得到了以下内容:
# aggregate nominations by actress
bsa_mod_count = bsa_mod.groupby('Name').Winner.count()
Name
Abigail Breslin 1
Adriana Barraza 1
Agnes Moorehead 4
Alfre Woodard 1
Alice Brady 2
Name: Winner, dtype: int64
我在此处运行.describe()以获取摘要统计信息,并发现计算的最大值为6.
我想通过运行类似的东西找出这个神秘人物是谁:
most_nominations = bsa_mod_count[bsa_mod_count.Winner == 6]
令我惊讶的是,我收到一个属性错误,说'Winner'不存在,而且我现在处理的数据类型是一个系列而不再是数据帧。
在'groupby'之后,数据帧是否会退化为一系列?我没想到我的索引会被覆盖,这似乎也发生在我运行.agg(['count'])时。有没有其他方法可以做到这一点,以保留我的数据帧并使'6'可用?
答案 0 :(得分:2)
答案是否,分组依旧保留结构。
示例中的 bsa_mod.groupby('Name').Winner.count()
返回一个系列对象,而bsa_mod.groupby('Name').count()
返回一个数据框。
答案 1 :(得分:1)
range (0, len(chests))