我有一个带有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)
答案 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