Python 如何计算熊猫中不同唯一ID的特定值的出现次数?

Python 如何计算熊猫中不同唯一ID的特定值的出现次数?,python,pandas,dataframe,Python,Pandas,Dataframe,我有超过10000个条目的大型数据集。数据集包含唯一ID、事件发生的年份以及该事件的大小。我想为每个唯一ID计算高于或低于特定阈值的事件数。但是,对于低于阈值的事件,我只想计算在某一年后发生的事件数 例如,假设我有以下数据: Unique ID, Year, Size 111, 1980, 1 111, 1992, 2 111, 2000, 4 222, 1990, 5 222, 1994, 3 333, 1999, 2 333, 2011, 5 333, 201

我有超过10000个条目的大型数据集。数据集包含唯一ID、事件发生的年份以及该事件的大小。我想为每个唯一ID计算高于或低于特定阈值的事件数。但是,对于低于阈值的事件,我只想计算在某一年后发生的事件数

例如,假设我有以下数据:

Unique ID, Year, Size  
111, 1980, 1  
111, 1992, 2  
111, 2000, 4  
222, 1990, 5  
222, 1994, 3  
333, 1999, 2  
333, 2011, 5  
333, 2012, 2  
333, 2016, 1 
我想对每个唯一ID的大小等于或大于3的事件进行分类。但我也只想对的事件进行计数,因为每个唯一ID的阈值年份不同,因此可能会使用以下方法进行筛选:

然后for count用于:


我建议你为你想要的所有不同的过滤器/选择创建不同的输出组合,因为它们非常具体,非常好地结合了地图和交叉表,还有np.where,哇!
111, 1, 1    
222, 1, 1  
333, 2, 1 
d = {111:1980, 222:1992, 333:2000}
df = df[df['Unique ID'].map(d).lt(df['Year'])]
print (df)
   Unique ID  Year  Size
1        111  1992     2
2        111  2000     4
4        222  1994     3
6        333  2011     5
7        333  2012     2
8        333  2016     1
df = pd.crosstab(df['Unique ID'], np.where(df['Size'].le(3), '<=3','>3'))
print (df)
col_0      <=3  >3
Unique ID         
111          1   1
222          1   0
333          2   1