python-3.x - 如何使用 Pandas 作为函数将数值重新分类到新的分组中,没有条件限制
问题描述
我想将 AGE 变量值重新分类为组 (AGE_RECAT)。例如,当 AGE 值介于 1 和 5 之间时,将 AGE_RECAT 分配为“ONE”。
我将函数设为:
def numeric_recat(df, var, condition_dict):
# return a pandas column
# condition_dict includes return value (key) and return condition (start numeric value, end numeric value)
# i.e., {'Group 1': [1, 2], 'Group 2': [2, 3]}
for key, value in condition_dict.items():
if (df[var] >= value[0]) & (df[var] <= value[1]):
return (str(key))
else: return np.nan
并尝试将其称为:
df_pc['AGE_RECAT'] = vc.numeric_recat(df_pc, 'AGE', condition_dict=
{'One': [1, 5],
'Two': [6, 10],
'Three': [11, 64],
'Four': [65, 300]
})
但收到此错误:
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
编辑以解决重复的建议:
虽然总体目标是相同的,但类似问题中的答案不适用于我需要的特定条件格式。我首选的条件格式是单个字典,而答案需要两个列表(箱和名称)。
解决方案
推荐阅读
- c# - 将数据添加到列表时出现类型初始化错误
- django - Django REST Framework 更改基于响应的 rederer 类
- python - 根据两种不同的条件突出显示 pandas 数据框列
- javascript - js.js:14 未捕获的类型错误:无法读取 null 的属性“样式”
- javascript - 使用双参数重新加载页面时应用程序崩溃
- c# - 在场景中注入游戏对象
- ios - 过期文本字段中的卡片
- c - SIGCONT 可以唤醒休眠的进程吗?
- python - MLeap 问题:无法用 Pyspark 反序列化使用 Scikit-Learn 编写的包。错误:找不到 bundle.json
- python - 如何解决这个问题:TypeError:期望期货列表,而不是任务