ValueError:Series的真值是不明确的。

时间:2017-10-25 16:13:45

标签: python pandas

我已经看过一些有这个错误的帖子,但它们并不适用于这种特殊情况。

说我的数据框如下......

import pandas as pd
df = pd.DataFrame(np.random.randint(0,20,size=(10, 2)), columns=list('AB'))


    A   B
0  12  12
1  15   3
2   3  12
3   4  11
4  12   9
5   0   4
6  19  12
7   5  19
8  11  16
9  13   8

我想创建一个列factor,它取决于列A的值。 我们先说df[A]<=10然后factor=5其他factor=8

我试过了:

df['factor'] = 5 if df['A'] <= 10 else 8

但是我收到了一个错误:

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

1 个答案:

答案 0 :(得分:2)

你需要这个:

df['factor'] = np.where( df.A <= 10, 5, 8) 

你也可以使用面具

mask = df['A'] <= 10 
df['factor'] = 8 
df.loc[mask, 'factor'] = 5 

注意: Truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all()中的答案巧妙地解释了错误背后的原因。