【问题标题】:How to return a pandas dataframe instead of a series如何返回熊猫数据框而不是系列
【发布时间】:2021-03-22 15:05:05
【问题描述】:

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

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

【问题讨论】:

标签: python pandas


【解决方案1】:

我认为你需要改变如下:

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

【讨论】:

  • 使用df[features] = df[features].notna() 仍然返回一个系列
  • @ShadowWalker - 你对所有代码都使用它吗?答案已根据我的想法进行了编辑。
  • 我在上面尝试了你的代码,但仍然返回一个系列。
  • @ShadowWalker - 你认为print (df.isnull().sum()) 是什么Seriesprint (df) DataFrame 是什么?
  • 我的错,我用你的更改重新运行代码并且它有效。谢谢
猜你喜欢
  • 1970-01-01
  • 2016-09-12
  • 1970-01-01
  • 2020-06-03
  • 1970-01-01
  • 1970-01-01
  • 2022-07-21
  • 2022-07-22
  • 1970-01-01
相关资源
最近更新 更多