【发布时间】:2015-11-10 03:40:23
【问题描述】:
我有一个数据框,我编写了以下函数来填充一个新列:
df = pd.DataFrame(np.random.randn(10, 2), columns=['a', 'b'])
def perc(a,b):
if a/b < 0:
n = 0
elif a/b > 1:
n = 1
else:
n = a/b
return n
df['c']=perc(df['a'],df['b'])
df[1:10]
它应该计算百分比列。这是我得到的错误:
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
我知道这与 dif 和 unc 是系列而不是单个元素有关。但是我该如何解决呢?
【问题讨论】:
-
你真正想要的行为是什么?给出一个示例输入和预期输出,以演示您尝试捕获的所有逻辑。这是我的猜测,如果
dif是系列[-1, 1, 3, 5]和unc是系列[2, 2, 3, 3]那么dif/unc将是[-0.5, 0.5, 1, 1.6666]并且您想返回[0, 0.5, 1, 1],对吗? -
我需要列“C”来显示该行的 a/b 的唯一值。但如果它是负数,它应该是 0%,或者如果它超过 100%,它应该显示 1。
-
嘿,是的,你明白了。你一定是在我回复后编辑的。请注意,我将我的 OP 编辑为更通用的 a/b。