Python 条件下的列值相乘
希望您能提供以下帮助:Python 条件下的列值相乘,python,pandas,conditional-statements,Python,Pandas,Conditional Statements,希望您能提供以下帮助: 我在列(DF)中有一个干净的浮点值,如果这个值,这里有一个方法: df = pd.DataFrame({"price": [10, 50, 75], "commision": [0.1, 5.0, 0.5]}) print(df) ==> price commision 0 10 0.1 1 50 5.0 2 75 0.5 df.loc[df.co
我在列(DF)中有一个干净的浮点值,如果这个值,这里有一个方法:
df = pd.DataFrame({"price": [10, 50, 75], "commision": [0.1, 5.0, 0.5]})
print(df)
==>
price commision
0 10 0.1
1 50 5.0
2 75 0.5
df.loc[df.commision < 1, "commision"] = df.commision * df.price
print(df)
==>
price commision
0 10 1.0
1 50 5.0
2 75 37.5
df=pd.DataFrame({“价格”:[10,50,75],“佣金”:[0.1,5.0,0.5]})
打印(df)
==>
价格佣金
0 10 0.1
1 50 5.0
2 75 0.5
df.loc[df.commission<1,“commission”]=df.commission*df.price
打印(df)
==>
价格佣金
0 10 1.0
1 50 5.0
2 75 37.5
除了@Roy2012的答案(+1),还有另一种方法
将熊猫作为pd导入
将numpy作为np导入
df=pd.DataFrame({“价格”:[10,50,75],“佣金”:[0.1,5.0,0.5]})
df['Price']=np.where(
df['Price']<1,#条件(Price<1)。
df['Price']*df['commission'],#条件为真时分配给Price的内容。
df['Price']#当条件为false时,分配给Price的内容。
)
df['commission']*df['price']
可以工作,赋值后不需要使用loc
命令:)非常感谢-我尝试过-=乘法有问题-因为2列是float,所以不能用“float”类型的非整数乘以序列。我不确定是否遵循。你有什么错误吗?具体问题是什么?TypeError:在处理上述异常期间,无法将序列与类型为“float”的非int相乘,出现了另一个异常:TypeError回溯(上次调用)/usr/local/lib/python3.6/dist-packages/pandas/core/ops/array_ops.py in masked_arith_op(x,y,op)92如果mask.any():93带有np.errstate(all=“ignore”):-->94 result[mask]=op(xrav[mask],yrav[mask])95 96其他:TypeError:不能将序列与“float”类型的非int相乘。请运行df.to_dict()并将结果添加到问题中好吗?看起来你的数据和我的不一样。你好,维克托,谢谢你的回复。我试过你的np.where-我不明白为什么它不能比较。这两列都转换为float。df['Баааааа′]=np.式中(df['Баааааааа107
for i in range (df.shape [0]):
if (df['Comission'].iloc(i)<1)&(df['Comission'].iloc(i)>0):
df['Comission'].iloc(i)= df['Comission'].iloc(i)*df['Price'].iloc(i)
df = pd.DataFrame({"price": [10, 50, 75], "commision": [0.1, 5.0, 0.5]})
print(df)
==>
price commision
0 10 0.1
1 50 5.0
2 75 0.5
df.loc[df.commision < 1, "commision"] = df.commision * df.price
print(df)
==>
price commision
0 10 1.0
1 50 5.0
2 75 37.5