Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 条件下的列值相乘_Python_Pandas_Conditional Statements - Fatal编程技术网

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