繁体   English   中英

熊猫数据框和如果条件

[英]Pandas Dataframe and If Conditions

我有一个数据框。 但在这个数据框中,我只想使用一列。 它的名字是 data_state2['Quantity Total First']

对于数学运算,其他 df 是 data_state2['Rate2'] = data_state['Rate1']

我想构造一个 if 语句。 也就是说,如果在一定的数字范围内,就让它做我想要的数学计算。 但是当我尝试这样做时,我无法使用数据框。

你能帮助我吗?

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().           

您可以使用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