获取每个项目的列上的频率

时间:2020-11-03 08:39:13

标签: python pandas dataframe

我一直试图在一段时间内每天获取每个ID的频率。 我有以下数据框:

data1 = pd.DataFrame({
'Date_Time': [
'2010-01-01', '2010-01-01', 
'2010-04-02', '2010-04-01',
'2011-01-01', '2011-01-01', 
'2013-01-01', '2014-01-01', 
'2014-01-01', '2015-01-01', 
'2016-01-01', '2011-01-01'], 
'ID': [1, 1, 1, 1, 2, 2, 3, 4, 4, 5, 6, 6]
})

因此,鉴于存在相同ID的日子很多,因此我想每天获取每个ID的频率。我尝试了以下有效的方法,但仍在努力使其正确。这是我使用的代码:

for dt in set(data1['Date_Time']):  
  for id in df['ID']:
    length = len(data1[data1['Date_Time']==dt])
  data1.loc[data1['Date_Time']==dt, 'new'] = length

最终结果应该看起来像这样

Here are the assumed results

1 个答案:

答案 0 :(得分:0)

您可以将df.groupby()transform结合使用:

In [94]: data1['ID_freq_per_day'] = data1.groupby(['Date_Time', 'ID'])['ID'].transform('size')

In [95]: data1
Out[95]: 
     Date_Time  ID  ID_freq_per_day
0   2010-01-01   1                2
1   2010-01-01   1                2
2   2010-04-02   1                1
3   2010-04-01   1                1
4   2011-01-01   2                2
5   2011-01-01   2                2
6   2013-01-01   3                1
7   2014-01-01   4                2
8   2014-01-01   4                2
9   2015-01-01   5                1
10  2016-01-01   6                1
11  2011-01-01   6                1
相关问题