python条件聚集

时间:2019-03-22 21:54:22

标签: python pandas dataframe conditional aggregation

我有一个带有3000个类别标签的大型数据框。我想根据groupby计数有选择地重新编码标签。这就像Excel中的条件替换。例如:

ID Label   
1  cat  
2  dog  
3  cat  
4  cat  
5  dog  
6  bird 

每个的计数:

cat: 3  
dog: 2  
bird: 1   

逻辑:如果计数<= 2,则将标签更改为“其他”

ID Label   
1  cat  
2  other  
3  cat  
4  cat  
5  other  
6  other  

每个的计数:

cat: 3  
other: 3  

也许你们中的某些人知道完成同一件事的更Python方式。也许神秘的lambda函数可以提供帮助...

已经像往常一样在这里阅读了很多帖子。

我微薄的Python代码如下:

df['Label'] = df.groupby('Label')['Label'].transform('count')
df['New_Label'] = np.where(df.label <= 2, 'other', df.label)

1 个答案:

答案 0 :(得分:1)

此代码使用pd.DataFrame.where()代替np.where(),并在一行中完成:

df.Label = df.Label.where(df.groupby('Label')['Label'].transform('count') > 2, 'other')
print(df)
     Label
ID       
1      cat
2    other
3      cat
4      cat
5    other
6    other