我正在进行2020年StackOverflow开发人员调查。有一个列'YearsCode'。你从事编程工作多少年了?该列的数据类型为"object"。我试着从这一列中找到均值。我尝试了以下步骤,但发现了一个错误——
df['YearsCode'].unique() # here I found 'less than 1 year', 'more than 50 years'.
df['YearsCode'].replace('Less than 1 year',0,inplace = True)
df['YearsCode'].replace('More than 50 years',51,inplace = True)
df['YearsCode'].astype(float)
# to avoid nan values we will use skipna
df['YearsCode'].mean(skipna=False)
# returns---TypeError: can only concatenate str (not "float") to str
#if I make NaN values to 0, by mean will not be right
您的df['YearsCode'].astype(float)
语句没有生效,因为它没有"置入"。它返回一个序列,但不改变df['YearsCode']
的原始值。试题:
df['YearsCode'] = df['YearsCode'].astype(float)
df['YearsCode'].mean(skipna=False)
或简单的:
df['YearsCode'].astype(float).mean(skipna=False)
第一次,我替换了原来的&;yearscode&;使用浮点类型"YearsCode"。第二次,我直接在浮点类型&;yearscode&;上计算.mean()
。