Groupby值如何计算熊猫数据框?

时间:2020-03-12 13:42:51

标签: python pandas dataframe

这是我的数据框

# Ignore all
*

# Unignore directories
!*/

# Unignore source code files
!source/**/*.c
!source/**/*.h

我想计算在每个群集中选择的每个字母,并按群集分组。 我尝试了这个: df = pd.DataFrame([ ('a', 0, 0), ('b', 1, 1), ('c', 1, 0), ('d', 2, 1), ('e', 2, 1) ], columns=['name', 'cluster', 'is_selected']) 我得到这个输出:

df.groupby('cluster')['is_selected'].value_counts()

但是我想要的是这种格式:

cluster  is_selected
0        0              1
1        0              1
         1              1
2        1              2
Name: is_selected, dtype: int64

请问我该如何解决?

2 个答案:

答案 0 :(得分:1)

根据您的解释,您要计算按簇分组的所选字母(is_selected中的值为1)。

如果这就是您要寻找的东西,那么应该会有所帮助:

df[df.is_selected == 1].groupby(['cluster'])['name'].count().reset_index(name='count_selected')

输出有些不同,但是我还是不完全确定是什么导致您的群集0的预期输出计数为1,所以我希望是这样!

输出:

    cluster count_selected
0   1       1
1   2       2

答案 1 :(得分:1)

这应该给出预期的输出:

df.where(df['is_selected'] == 1).groupby('cluster')['is_selected'].count().rename(
    'count_selected').reindex(df['cluster'].drop_duplicates()).fillna(0).astype(int).reset_index()