虽然这个问题看起来非常相似,但我被困了。以下是数据样本。我想添加productView和Order的数量,其中productView<订购。
productView order
userId
A 4.5 5.0
B 1.5 2.5
C 4.0 2.0
D 2.0 3.0
我尝试了以下代码,但抛出错误
order_Segemnt.productView=np.where(order_Segment[order_Segment.productView< order_Segment.order]['productView'],order_Segment.productView+order_Segment.order, order_Segment.productView)
我得到的错误就是这个
Error- ValueError: operands could not be broadcast together with shapes (408,) (7464,) (7464,)
如何实现我的目标?
答案 0 :(得分:4)
语法 -
np.where(condition, value1, value2)
解决方案 -
np.where(
df.productView < df.order, df.productView + df.order, df.productView
)
array([9.5, 4. , 4. , 5. ])
作为一种有效的替代方案,您可以使用loc
:
m = df.productView < df.order
df.loc[m, 'productView'] = df.loc[m, ['productView', 'order']].sum(1)
答案 1 :(得分:1)
也许mask
df['New']=df.productView.mask(df.order>df.productView,df.sum(1))
df
Out[271]:
productView order New
userId
A 4.5 5.0 9.5
B 1.5 2.5 4.0
C 4.0 2.0 4.0
D 2.0 3.0 5.0