Python 装箱后为空值

Python 装箱后为空值,python,pandas,dataframe,data-science,Python,Pandas,Dataframe,Data Science,使用pd()将连续变量转换为分类变量时,空值出现在“年龄”列中,该列从没有任何空值的“年龄”中转换而来。这里的解决方案是什么 df['age_in_years']=df['age_in_days']/365 df.drop('age_in_days',inplace=True,axis=1) bins=[0,35,60,100] group=['young','middle_aged','senior'] df['age']=pd.cut(df['age_in_years'],bins,labe

使用pd()将连续变量转换为分类变量时,空值出现在“年龄”列中,该列从没有任何空值的“年龄”中转换而来。这里的解决方案是什么

df['age_in_years']=df['age_in_days']/365
df.drop('age_in_days',inplace=True,axis=1)
bins=[0,35,60,100]
group=['young','middle_aged','senior']
df['age']=pd.cut(df['age_in_years'],bins,labels=group,right=True).astype('object')

现在,当我运行
df.isnull().sum()
时,年龄列显示空值

数据集:

您可以尝试:

bins=[-np.inf,0,35,60,100,np.inf]
df['age']=pd.cut(df['age_in_years'],bins,labels=group,right=True).astype('object')
这将诊断问题,还包括低于0
(-inf,0.0]
和高于100
[100.0,inf)
的值。您可以尝试:

bins=[-np.inf,0,35,60,100,np.inf]
df['age']=pd.cut(df['age_in_years'],bins,labels=group,right=True).astype('object')

这将诊断问题,还包括低于0
(-inf,0.0]
和高于100
[100.0,inf)的值

发生错误的原因是,您的五行的
age\u in\u years
大于100,并且由于您确定最后一个bin结束于100,因此在构建
age
时,这五行将获得空值

您可以使用
float('inf')
作为最后一个箱子的上限来调整代码:

bins = [0, 35, 60, float('inf')]
group = ['young', 'middle_aged', 'senior']
df['age'] = pd.cut(df['age_in_years'], bins, labels=group, right=False).astype('object')

发生错误的原因是,您的五行中的
age\u in\u years
大于100,并且由于您确定最后一个bin结束于100,因此在构造
age
时,这五行将获得空值

您可以使用
float('inf')
作为最后一个箱子的上限来调整代码:

bins = [0, 35, 60, float('inf')]
group = ['young', 'middle_aged', 'senior']
df['age'] = pd.cut(df['age_in_years'], bins, labels=group, right=False).astype('object')

您能否提供数据帧
df
的样本,以便重现问题?尤其是出现问题的行,这可能是由于它们的
age in_years
超出了[0,100]范围,因为一些年龄超出了范围(0100)您能否提供数据帧
df
的样本,以便重现问题?尤其是出现问题的行,这可能是由于它们的
age in_years
超出了[0,100]范围,因为一些年龄超出了范围(0100)