我的大型DataFrame具有太多功能,无法一一选择其dtype。但是,许多列的名称相似,因此我仔细研究并整理成列表,将我知道的关键字包含在列的名称中。
因此,每个dtype都有一个关键字列表(即,numerical = ['test1','test2'],因为许多数字列都包含这些字符串之一。我也对要删除并首先运行的列执行相同的操作,这没有问题(我先运行它,这样我就可以插值,而不会因尝试用Nan插值而出错)。
这是我到目前为止所拥有的:
def order_columns(results):
results_df_temp = results.loc[:, results.columns]
# Dropped columns
for col in results_df_temp:
for d in drop:
if d in str(col):
results_df_temp.drop(columns=col, axis=1, inplace=True)
results_df_temp = results_df_temp[results_df_temp.columns.drop(list(results_df_temp.filter(regex=d)))]
# Numerical/Ordinal/Categorical Columns
for col in results_df_temp:
# Numerical
for n in numerical:
if n in str(col):
results_df_temp.fillna(results_df_temp[col].median(), axis=1, inplace=True) # fill median for numerical
results_df_temp[col] = results_df_temp[col].astype('float')
# Ordinal
for o in ordinal:
if o in str(col):
results_df_temp.fillna(results_df_temp[col].mode(), axis=1, inplace=True) # fill mode for ordinal
results_df_temp[col] = results_df_temp[col].astype('int')
# Categorical
for c in categorical:
if c in str(col):
results_df_temp.fillna(results_df_temp[col].mode(), axis=1, inplace=True) # fill mode for categorical
results_df_temp[col] = results_df_temp[col].astype('category')
return results_df_temp
我不断收到错误消息“ int()以10为基数的无效文字:”,然后给出了分类功能的名称。但是我无法弄清楚这段代码有什么问题