如何在Pandas多分组列内对指定列数据进行随机打乱?
解决Pandas多分组列内指定数据打乱的问题
错误原因分析
你之前的代码存在两个核心问题:
- 分组列仅指定了
"values",但实际需要按ID、values、source、type、function5列分组,必须传入列名列表才能避免多键索引弃用警告 transform中指定的操作列错误,你需要打乱的是values_new_column,而非source、type、function、ID列
正确实现代码
# 先完成原value列到新列的复制 pdf1["values_new_column"] = pdf1["value"].copy() # 按指定5列分组,对values_new_column执行组内打乱 pdf1["values_new_column"] = pdf1.groupby(["ID", "values", "source", "type", "function"])["values_new_column"].transform(np.random.permutation)
代码说明
groupby传入列名列表["ID", "values", "source", "type", "function"],完全匹配你的分组需求,同时规避弃用警告- 针对
values_new_column调用transform(np.random.permutation),实现每个分组内该列数据的随机重排,其他列保持原有顺序
内容的提问来源于stack exchange,提问作者mb_eng
相关产品推荐
相关产品推荐

