Python 如何返回数据帧而不是序列

Python 如何返回数据帧而不是序列,python,pandas,Python,Pandas,我创建了一个函数来处理数据处理,比如填充空值,但是函数的结果是返回一个序列,而不是给我一个数据帧。我如何解决这个问题 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_colum

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

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()

我认为你需要改变,比如:

df = 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()

这回答了你的问题吗?使用
df[features]=df[features].notna()
仍返回series@ShadowWalker-所有代码都使用它吗?答案是按我的想法编辑的。我尝试了上面的代码,但仍然返回了一个系列。@ShadowWalker-你认为
print(df.isnull().sum())
预期的
series
还是
print(df)
什么是
DataFrame
?我的错,我用你的更改重新运行了代码,代码成功了。谢谢
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()