我试图创建一个票价带(1/2/3)通过这个循环,但它似乎没有工作
traindf['FareBand'] = np.nan
for index, row in traindf.iterrows():
if row['Fare'] <= 13.675550:
row['FareBand'] = 1
elif row['Fare'] <= 20.662183 and row['Fare'] > 13.675550:
row['FareBand'] = 2
else:
row['FareBand'] = 3
Running.head()将显示fareband列下的所有行都是NaN
traindf.head(20)
Output:
0 NaN
1 NaN
2 NaN
3 NaN
...
12 NaN
13 NaN
14 NaN
15 NaN
16 NaN
17 NaN
18 NaN
19 NaN
Name: FareBand, dtype: float64
原因是什么?你知道吗
如果要使用所描述的方法,在循环内应用更改,则只需在特定索引位置设置数据帧行的值:
我建议使用^{} :
您的解决方案可能会更改按索引选择的值,但不要使用它,因为速度很慢:
您可以在不使用循环的情况下分三步完成此操作:
相关问题 更多 >
编程相关推荐