条件下熊猫乘以列值

时间:2020-07-30 20:31:30

标签: python pandas conditional-statements

希望对此有所帮助: 我在列(pandas DF)中有干净的float值,如果该值<1(错误的分析数据),则需要将其与另一列(对应轴)的Price值相乘。

    Price    Comission
    10 000   0.1 
    50 000   5 000 
    75 000   0.5

我试过这样的东西:(没有成功)

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)

有没有一种方法可以使熊猫更容易选择并在选择下繁衍?

2 个答案:

答案 0 :(得分:2)

这是一种实现方法:

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

答案 1 :(得分:0)

除了@ Roy2012的答案(+1),这是另一种处理方法。

import pandas as pd
import numpy as np

df = pd.DataFrame({"Price": [10, 50, 75], "Commision": [0.1, 5.0, 0.5]})

df['Price'] = np.where(
    df['Price'] < 1,                # Condition (price < 1).
    df['Price'] * df['Comission'],  # What to assign to price when condition is true. 
    df['Price']                     # What to assign to price when condition is false.
)