我想为数据框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 无法决定做什么 .
if
另请查看using if truth statements with pandas .
是的,在哪里或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 是
2 回答
使用numpy.where:
您的代码有问题,如果使用:
它返回布尔掩码,
if
无法决定做什么 .另请查看using if truth statements with pandas .
是的,在哪里或numpy.select:
返回:
哪个容易扩展到更多条件:
返回: