我已经看过一些有这个错误的帖子,但它们并不适用于这种特殊情况。
说我的数据框如下......
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().
答案 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()中的答案巧妙地解释了错误背后的原因。