[英]pandas add columns ,note The truth value of a Series is ambiguous
我想在數據框 a 中添加一列,
a = pd.DataFrame([[1,2],[3,4]],columns=['A','B'])
if a['B'] > a['A']:
a['C']='是'
else:
a['C']='否'
ValueError:系列的真值不明確。 使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。
使用numpy.where
:
#swapped 2,1
a = pd.DataFrame([[2,1],[3,4]],columns=['A','B'])
a['C'] = np.where(a['B']>a['A'], '是','否')
print (a)
A B C
0 2 1 否
1 3 4 是
您的代碼問題是如果使用:
print (a['B']>a['A'])
0 False
1 True
dtype: bool
它返回布爾掩碼, if
不能決定做什么。
是的, where 或numpy.select :
a = pd.DataFrame([[2,1],[3,4]],columns=['A','B'])
a['C'] = np.select([a['B']>a['A']], '是', default = '否')
print(a)
返回:
A B C
0 2 1 否
1 3 4 是
這很容易擴展到更多條件:
a = pd.DataFrame([[2,1],[3,4],[1,10]],columns=['A','B'])
condlist = [
a['B'] > 5*a['A'],
a['B'] > a['A']
]
valuelist = ['是', '否']
a['C'] = np.select(condlist, valuelist, default=np.nan)
print(a)
返回:
A B C
0 2 1 nan
1 3 4 否
2 1 10 是
還有一個選項是
np.choose()
其中實施
np.choose('是','否')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.