我有一个如下所示的 csv 文件:
patient_id age_in_years CENSUS_REGION URBAN_RURAL_STATUS YEAR MONTH DAY_NUMBER_IN_MONTH race
11511 7 Northeast Urban 2011 6 20 Other
9882613 73 South Urban 2011 7 25 Unknown
32190339 49 West Urban 2011 8 13 Caucasian
...
我已使用以下方法将此文件中的分类数据(例如种族、人口普查区域、城市/农村状况等)转换为二进制向量对象:
def URSTATUS_to_numeric(a):
if a == 'Urban':
return [1, 0, 0]
if a == 'Rural':
return [0, 1, 0]
if a == 'NULL':
return [0, 0, 1]
df['URSTATUS_num'] = df['URBAN_RURAL_STATUS'].apply(URSTATUS_to_numeric)
我想使用这些向量进行线性回归分析,但无法使用以下代码调用它们:
def import_data(file_name):
df = pd.read_csv(file_name).drop_duplicates()
X_parameter = []
#Y_parameter = []
for alpha in zip(df['age_in_years']):
X_parameter.append([float(alpha)])
#Y_parameter.append(float(beta))
return X_parameter#, Y_parameter
X = import_data(filename)
Y = df['URSTATUS_num']
我收到的错误是这样的:
TypeError: float() argument must be a string or a number
最佳答案
如果您只是迭代该系列来构建 float 列表,则可以使用 astype (漂浮)。
不过,该列中似乎有一些值无法转换为 float 。为了排除故障,也许只需尝试
for alpha in zip(df['age_in_years']):
try:
X_parameter.append([float(alpha)])
except:
print alpha
您应该能够使用
替换整个函数X = pd.read_csv(file_name).drop_duplicates()['age_in_years'].astype(float)
关于python - 使用 pandas 导入转换后的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31926454/