简体   繁体   English

熊猫数据框和如果条件

[英]Pandas Dataframe and If Conditions

I have a dataframe.我有一个数据框。 But in this dataframe, I just want to use just a column.但在这个数据框中,我只想使用一列。 İts name is data_state2['Quantity Total First']它的名字是 data_state2['Quantity Total First']

For math operation others df are data_state2['Rate2'] = data_state['Rate1']对于数学运算,其他 df 是 data_state2['Rate2'] = data_state['Rate1']

I want to construct an if statement.我想构造一个 if 语句。 In other words, if it is within a certain number range, let it do the mathematical calculation I want.也就是说,如果在一定的数字范围内,就让它做我想要的数学计算。 But when I try to do it I can't use if with dataframe.但是当我尝试这样做时,我无法使用数据框。

Can you help me?你能帮助我吗?

if data_state2[(data_state2['Quantity Total First'] <= 500000000)]:
  data_state2['Rate1'] = data_state['Rate']
elif data_state2[(data_state2["Quantity Total First"] >= 50000000) & (data_state2["Quantity Total First"] <= 500000000)]:
  data_state2['Rate1'] = data_state['Rate']*0.9 + data_state2['Rate1']*0.1
elif data_state2[(data_state2["Quantity Total First"] >= 500000000) & (data_state2["Quantity Total First"] <= 2000000000)]:
    data_state2['Rate1'] = data_state['Rate']*0.8 + data_state2['Rate1']*0.2
elif data_state2[(data_state2["Quantity Total First"] >= 2000000000) & (data_state2["Quantity Total First"] <= 4000000000)]:
    data_state2['Rate1'] = data_state['Rate']*0.5 + data_state2['Rate1']*0.5
elif data_state2[(data_state2["Quantity Total First"] >= 4000000000) & (data_state2["Quantity Total First"] <= 6000000000)]:
    data_state2['Rate1'] = data_state['Rate']*0.25 + data_state2['Rate1']*0.75
else:
    data_state2['Rate1']


ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().           

You can use np.where您可以使用np.where

data_state2['Rate1'] = np.where(
    [data_state2['Quantity Total First'] <= 500000000,
     (data_state2["Quantity Total First"] >= 50000000) & (data_state2["Quantity Total First"] <= 500000000),
     (data_state2["Quantity Total First"] >= 500000000) & (data_state2["Quantity Total First"] <= 2000000000),
     (data_state2["Quantity Total First"] >= 2000000000) & (data_state2["Quantity Total First"] <= 4000000000),
     (data_state2["Quantity Total First"] >= 4000000000) & (data_state2["Quantity Total First"] <= 6000000000),
     ],
    [data_state['Rate'],
     data_state['Rate']*0.9 + data_state2['Rate1']*0.1,
     data_state['Rate']*0.8 + data_state2['Rate1']*0.2,
     data_state['Rate']*0.5 + data_state2['Rate1']*0.5,
     data_state['Rate']*0.25 + data_state2['Rate1']*0.75
     ],
    data_state2['Rate1']
)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM