1

我有一个数据框,我想根据它属于某个类别和某个时期的条件计算一个 id 出现的次数。我在这里有一个简单版本的数据框:

在此处输入图像描述

我想编写一个脚本,该脚本能够计算在“期间 1”期间以“1”类别出现的次数,例如 ID“1”

所以输出会是这样的:

计数 = 2

因为 ID 1 在类别 1 和期间 1 中出现了两次。

请注意,我不想在脚本中明确命名 ID,因为我想计算其他 ID 的出现次数,而不仅仅是 ID '1'。

4

3 回答 3

1

您正在谈论所有条件都为真的地方,因此len数据框就是答案:

len(df[(df['ID'] == 1) & (df['category'] == 1) & (df['period'] == 'period 1')])

或者

(df['ID'].eq(1) & df['category'].eq(1) & df['period'].eq('period 1')).sum()
于 2020-04-25T20:06:47.223 回答
1

您可以使用 pandas pivot 函数和聚合函数提及计数

pd.pivot_table(df, index=['Category','period'], values='ID', aggfunc='count').reset_index()
于 2020-04-25T20:07:19.867 回答
1

使用检查条件query,然后应用lenfunc 来查找行数或计数。

len(df.query("id==1 & Category==1 & period=='period 1'"))
2

更新:对于您以后更新的问题答案将是

df.query("Category==1 & period=='peroid 1'")['id'].value_counts()
于 2020-04-25T20:20:19.283 回答