Python 有没有更简洁的方法来计算熊猫群中的行数?

Python 有没有更简洁的方法来计算熊猫群中的行数?,python,pandas,Python,Pandas,这是一个数据表 为了以“Age”==“young”为条件按类分组计算行数,我使用了这段代码 df.loc[(df['Age']=='young') & (df['Class'] == 'Yes'),'Class'].count() df.loc[(df['Age']=='young') & (df['Class'] == 'No'),'Class'].count() 输出 2 3 是否有一种简洁的方法来获取行数(2和3)?您可以使用: print(df.groupby('C

这是一个数据表

为了以“Age”==“young”为条件按类分组计算行数,我使用了这段代码

df.loc[(df['Age']=='young') & (df['Class'] == 'Yes'),'Class'].count()
df.loc[(df['Age']=='young') & (df['Class'] == 'No'),'Class'].count()
输出

2
3
是否有一种简洁的方法来获取行数(2和3)?

您可以使用:

print(df.groupby('Class').size())
如果您只想要
'young'

print(df[df['Age'].eq('young')].groupby('Class').size())
您可以使用:

print(df.groupby('Class').size())
如果您只想要
'young'

print(df[df['Age'].eq('young')].groupby('Class').size())

您还可以尝试
df.groupby(['Age','Class']).count()
。您将通过这些值的组合(不仅是年龄==Young)获得所有计数,而且您可以稍后将其过滤掉。

您还可以尝试
df.groupby(['Age','Class']).count()
。您将通过这些值的组合(不仅是年龄==年轻)获得所有计数,但稍后您可以将其过滤掉。

这里您可以为年龄类别的每个类别计数:

df.groupby(['Age','Class'])['Class'].count()

在这里,您可以计算每个年龄类别的人数:

df.groupby(['Age','Class'])['Class'].count()

我看到已经提供了足够的答案,但是将示例数据集放在这里供后代创建和使用数据集进行测试

模拟数据集: 数据帧:

>>> df
     Age Class Credit_rating Has_job Own_house
0  young    No          fair   False     False
1  young    No          Good   False     False
2  young   Yes          Good    True     False
3  young   Yes          fair    True      True
4  young    No          fair   False     False
  • 在这里调用
    .size()
    将是获得作业的最简单方法,因为它返回
    系列
  • 但是,如果您希望以数据帧而不是序列的形式返回,请使用下面的
  • 或者您可以按如下方式应用groupby
  • 另一种方式是@U9前进

  • 我看到已经提供了足够的答案,但是将示例数据集放在这里供后代创建和使用数据集进行测试

    模拟数据集: 数据帧:

    >>> df
         Age Class Credit_rating Has_job Own_house
    0  young    No          fair   False     False
    1  young    No          Good   False     False
    2  young   Yes          Good    True     False
    3  young   Yes          fair    True      True
    4  young    No          fair   False     False
    
  • 在这里调用
    .size()
    将是获得作业的最简单方法,因为它返回
    系列
  • 但是,如果您希望以数据帧而不是序列的形式返回,请使用下面的
  • 或者您可以按如下方式应用groupby
  • 另一种方式是@U9前进

  • 最好是添加代码或复制/粘贴数据示例,而不是屏幕截图。最好是添加代码或复制/粘贴数据示例,而不是屏幕截图。你是说
    print(df[df['Age']='young'].groupby('Class').size())
    ?@U9 Forward,nice one+1,这是
    最简单的方法。size
    你是指
    print(df[df['Age']=='young'].groupby('Class').size())
    ?@U9 Forward,nice one+1,这是使用
    .size
    最简单的方法。虽然此代码可能会回答问题,但提供有关如何和/或为什么解决问题的附加上下文将提高答案的长期价值。虽然此代码可能会回答问题,提供关于如何和/或为什么解决问题的附加上下文将提高答案的长期价值。关于第二个示例,您还可以执行
    df.groupby(['Class'],as_index=False)。size()
    关于第二个示例,您还可以执行
    df.groupby(['Class'],as_index=False)。size()
    >>> df.groupby(['Class'], as_index=False).size()
    Class
    No     3
    Yes    2
    dtype: int64