Python 如何计算熊猫中不同唯一ID的特定值的出现次数?
我有超过10000个条目的大型数据集。数据集包含唯一ID、事件发生的年份以及该事件的大小。我想为每个唯一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
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