groupby语句会导致数据帧崩溃到系列吗?

时间:2017-04-26 23:58:03

标签: python pandas

我从一个大型数据框开始。我削减并重新安排了一些专栏。我保存的最后一个(相当大的)数据帧的头部看起来像这样:

# 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'可用?

2 个答案:

答案 0 :(得分:2)

答案是否,分组依旧保留结构。

示例中的

bsa_mod.groupby('Name').Winner.count()返回一个系列对象,而bsa_mod.groupby('Name').count()返回一个数据框。

答案 1 :(得分:1)

range (0, len(chests))