这是数据表
要计算以“年龄” ==“年轻”为条件的行,按班级分组,我使用这段代码
df.loc[(df['Age']=='young') & (df['Class'] == 'Yes'),'Class'].count()
df.loc[(df['Age']=='young') & (df['Class'] == 'No'),'Class'].count()
输出
2
3
是否有一种简洁的方法来获取行数(2和3)?
答案 0 :(得分:3)
您可以使用:
print(df.groupby('Class').size())
如果只需要'young'
:
print(df[df['Age'].eq('young')].groupby('Class').size())
答案 1 :(得分:3)
value_counts
返回一个包含唯一值计数的系列
df.loc[(df['Age']=='young'), 'Class'].value_counts()
输出
No 3
Yes 2
Name: Class, dtype: int64
答案 2 :(得分:0)
您也可以尝试DATETIME2
。您将通过这些值的组合获得所有计数(不仅是Age == Young),而且以后可以将其过滤掉。
答案 3 :(得分:0)
您可以在这里为每个年龄段类别计数:
df.groupby(['Age','Class'])['Class'].count()
答案 4 :(得分:0)
我看到已经提供了足够的答案,但是为了便于后代在此放置示例数据集,以便为了测试而创建和使用该数据集。
>>> df = pd.DataFrame({'Age': ['young','young','young','young','young'], 'Has_job':['False','False','True','True','False'], 'Own_house':['False','False','False','True','False',], \
... 'Credit_rating': ['fair','Good','Good','fair','fair'], 'Class':['No','No','Yes','Yes','No']})
DataFrame:
>>> 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()
是获取作业的最简单方法,因为它返回了Series
>>> df.groupby(['Class']).size() Class No 3 Yes 2 dtype: int64
>>> df.groupby(['Class']).size().reset_index(name='counts') Class counts 0 No 3 1 Yes 2
>>> df.groupby(['Class'])['Age'].count() Class No 3 Yes 2 Name: Age, dtype: int64
>>> df.groupby(['Class'], as_index=False).size() Class No 3 Yes 2 dtype: int64