Python 统计特定时间跨度内数据帧列中的最大发生次数
本问题旨在对以下问题采取后续行动: 假设我现在有以下数据帧:Python 统计特定时间跨度内数据帧列中的最大发生次数,python,pandas,Python,Pandas,本问题旨在对以下问题采取后续行动: 假设我现在有以下数据帧: 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 现在如何确定从周一开始到周日结束的一周内字符串出现的最大次数?从周一开始
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
,我相信您需要测试从周一到周日的周内的行数:
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
如何从第一个样本数据输出数据帧?是吗?谢谢你的回答。我知道这个答案有效一周,对吗?所以我假设如果我想在两周内做同样的事情,那么我应该使用freq='2W-Mon'。是这样吗?