[英]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.