Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我不明白为什么我的数据集中的列是NaN_Python_Python 3.x_Pandas_Dataframe - Fatal编程技术网

Python 我不明白为什么我的数据集中的列是NaN

Python 我不明白为什么我的数据集中的列是NaN,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,我试图通过这个循环创建一个票价区间(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['Fa

我试图通过这个循环创建一个票价区间(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
原因可能是什么?

我建议使用:

traindf=pd.DataFrame({'Fare':[10,15,3,30]})
m1=traindf['Fare']我建议使用:

traindf=pd.DataFrame({'Fare':[10,15,3,30]})

m1=traindf['Fare']您可以在不使用循环的情况下分三步执行此操作:

traindf['FareBand'] = 3
traindf.loc[traindf['Fare'].between(13.675550, 20.662183), 'FareBand'] = 2
traindf.loc[traindf['Fare'].le(13.675550), 'FareBand'] = 1

您可以在不使用循环的情况下分三步执行此操作:

traindf['FareBand'] = 3
traindf.loc[traindf['Fare'].between(13.675550, 20.662183), 'FareBand'] = 2
traindf.loc[traindf['Fare'].le(13.675550), 'FareBand'] = 1

如果要使用所描述的方法,在循环内部应用更改,则只需在特定索引位置设置数据帧行的值:

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
    traindf.loc[index] = row
对于traindf.iterrows()中的索引行:

如果行['Fare']如果要使用所描述的方法,在循环内部应用更改,则只需在特定索引位置设置数据帧行的值:

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
    traindf.loc[index] = row
对于traindf.iterrows()中的索引行:

如果行['Fare']看到整个数据集的更改可能在某个地方出现。。。另外,请在一个小数据行(如10行)上执行代码,然后在此处更新。查看整个数据集的更改可能在某个地方发生。。。另外,请在一个小数据(如10行)上执行代码,然后在此更新。请谨慎使用between,因为
不可能设置。什么是.le do@Alexless小于或等于,请参阅谨慎使用between,因为
不可能设置。什么是.le do@Alexless小于或等于,请参阅
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
    traindf.loc[index] = row