【问题标题】:Count maximum occurences in a dataframe column for a specific timespan计算特定时间跨度的数据框列中的最大出现次数
【发布时间】:2020-02-22 14:21:10
【问题描述】:

此问题旨在作为以下问题的后续问题:Count maximum consecutive occurences of a string in a dataframe column

假设我现在有以下数据框:

      col1      col2
0  21.02.2020  string1
1  19.02.2020  string1
2  16.02.2020  string1
3  14.02.2020  string2
4  10.02.2020  string3
5  08.02.2020  string3
6  02.02.2020  string1

现在如何确定字符串在从星期一开始到星期日结束的一周内的最大出现次数?在从周一开始到下周日结束的任何两周内,我怎样才能做到这一点?

我想计算出现次数,以便如果数据框跨越 5 周,它将返回该时间段内一周内出现的最高次数 string1。如果数据框仅作为示例:

      col1      col2
0  21.02.2020  string1

它会为string1返回1

【问题讨论】:

标签: python pandas


【解决方案1】:

我相信您需要测试从星期一到星期日的周数:

df['col1'] = pd.to_datetime(df['col1'], dayfirst=True)
g = df['col2'].ne(df['col2'].shift()).cumsum()

df1 = df.groupby([g, pd.Grouper(freq='W-Mon', key='col1')])['col2'].agg(['first','size'])
print (df1)
                   first  size
col2 col1                     
1    2020-02-17  string1     1
     2020-02-24  string1     2
2    2020-02-17  string2     1
3    2020-02-10  string3     2
4    2020-02-03  string1     1

df2 = (df1.sort_values('size')
          .drop_duplicates('first', keep='last')
          .reset_index(level=0, drop=True))
print (df2)
              first  size
col1                     
2020-02-17  string2     1
2020-02-24  string1     2
2020-02-10  string3     2

【讨论】:

  • 感谢您的回答。我知道这个答案可以使用一周,对吧?所以我假设如果我想在 2 周内做同样的事情,那么我应该使用 freq='2W-Mon'。对吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-10
  • 2020-09-12
  • 2020-03-18
  • 1970-01-01
  • 2014-08-24
  • 1970-01-01
相关资源
最近更新 更多