通过列名称中包含的字符串设置dtypes

时间:2019-09-28 01:51:57

标签: python pandas data-science

我的大型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为基数的无效文字:”,然后给出了分类功能的名称。但是我无法弄清楚这段代码有什么问题

0 个答案:

没有答案