首页 > 解决方案 > 如何返回熊猫数据框而不是系列

问题描述

我创建了一个函数来处理数据处理,例如填充空值,但函数的结果是返回一个系列而不是给我一个数据框。我该如何解决这个问题?

def preprocessing(df):
    df_columns = ['column1', 'column2','column3','column4', 'column5', 'column6','column7', 'column8']
    
    features= [c for c in df.columns.values if c in df_columns[0:2]]
    df = df[features].notna()
    
    features= [c for c in df.columns.values if c in df_columns[2:4]]
    max = df[features].max()
    df = df[features].fillna(max)
    
    # Fill na with 0
    features= [c for c in df.columns.values if c not in df_columns]
    df = df[features].fillna(0)
    
    return df

df = preprocessing(df) 

df.isnull().sum()

标签: pythonpandas

解决方案


我认为你需要改变:

df = df[features].notna()

至:

df[features] = df[features].notna()

仅处理列表中的列,并为您的所有代码分配回。

它的意思是:

def preprocessing(df):
    df_columns = ['column1', 'column2','column3','column4', 
                  'column5', 'column6','column7', 'column8']
    
    features= [c for c in df.columns.values if c in df_columns[0:2]]
    df[features] = df[features].notna()
    
    features= [c for c in df.columns.values if c in df_columns[2:4]]
    max1 = df[features].max()
    df[features] = df[features].fillna(max1)
    
    # Fill na with 0
    features= [c for c in df.columns.values if c not in df_columns]
    df[features] = df[features].fillna(0)
    
    return df

df = preprocessing(df) 

df.isnull().sum()

推荐阅读