分组数据帧中具有特定频率的记录数

时间:2018-04-13 14:59:32

标签: python pandas

我正在尝试计算记录在我的pandas列>=中频率大于3的次数 - 按日期分组。

目前此代码可以正常运行,但它适用于整体数据框架。

?:

我想按'Subject'对数据进行分组 - 以查看每天有多少记录的频率超过3。

我的数据框架如下所示:

main_subj = df['Subject'].value_counts(
[df['Subject'].value_counts()>3] count_main_subj = main_subj.shape[0]

例如,如果有一天有10条记录: 5主题特朗普 3主题克林顿 2与主题obama

结果为2 - 出现次数超过3次的受试者数量。

谢谢!

3 个答案:

答案 0 :(得分:0)

假设您有一个名为date的列,您可以按日期分组

df.groupby('date').size()

df[['Subject', 'date']].groupby('date').size()

这将输出您需要的计数

答案 1 :(得分:0)

似乎你需要

s=df.groupby(['Date','Object']).size()
len(s[s>3])

答案 2 :(得分:0)

您可以使用:

(df.groupby(['Date', 'Subject']).size() >= 3).sum()

示例:

In [227]: df
Out[227]:
  Subject   Verb     Object      ID      Date
0   trump    got       jobs  820108  20170803
1  voters  begin         to  182912  20170803
2   steve   miss  colleague  980828  20170804
3   trump    got       jobs  820108  20170803
4   trump    got       jobs  820108  20170803

In [228]: (df.groupby(['Date', 'Subject']).size() >= 3).sum()
Out[228]: 1

如果您想按日期计算:

d = (df.groupby(['Date', 'Subject']).size() >= 3).reset_index()
d[d[0]].groupby('Date').size()