Python 获取每个项目列的频率
一段时间以来,我一直在尝试获取每天每个ID的频率。 我有以下数据帧:Python 获取每个项目列的频率,python,pandas,dataframe,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
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
最终结果应该是这样的
您可以使用:
DaveWill,如果答案对你有用,请考虑投票,并通过点击<代码>蜱痕< /代码>,在我的答案>代码>左边<代码>旁接受。
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