我有一个数据框架,其中有一个year列(“年”)和一个dollar value列。我想按年份分组,然后针对每一行,确定该行是高于该组的中位数20%,还是低于该组的中位数20%。你知道吗
我尝试了以下方法:
def f(x):
if x >= 1.2* np.median(x):
return 'H'
elif x<= .8* np.median(x):
return 'L'
transformed = df.groupby('Year').transform(f)
但是我得到一个错误,数组的真值是不明确的。这让我觉得python将等式左侧和右侧的x都视为值的数组,而在其他转换函数中,它知道左侧的x是行元素,右侧的x被包装在聚合中,x是数组。你知道吗
你知道怎么做吗?你知道吗
我想你想要的是这样的:
屈服:
numpy
ndarray
不是bool
的有效参数,除非它的size
是0或1。这意味着您不能在if语句中计算它的“真实性”,除非它有0或1个元素。这就是为什么你得到你报告的错误。你知道吗相关问题 更多 >
编程相关推荐