【问题标题】:pythonic conditional aggregationpythonic条件聚合
【发布时间】:2019-08-13 22:50:05
【问题描述】:

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

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

每个的计数:

cat: 3  
dog: 2  
bird: 1   

逻辑:如果 count

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

每个的计数:

cat: 3  
other: 3  

也许你们中的一些人知道一种更 Pythonic 的方式来完成同样的事情。或许神秘的 lambda 函数能帮上忙……

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

我微薄的 Python 代码如下所示:

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

【问题讨论】:

  • 是熊猫数据框吗?
  • 是的。这一切都是用 Pandas 完成的。对上面的错误格式表示歉意,让我尝试修复它。

标签: python pandas dataframe conditional aggregation


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-27
    • 2021-08-24
    • 2010-11-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-08
    • 2015-08-17
    • 2019-11-17
    相关资源
    最近更新 更多