【问题标题】:Creating pandas DataFrame through class returns empty DataFrame通过类创建 pandas DataFrame 返回空 DataFrame
【发布时间】:2020-05-28 11:40:21
【问题描述】:

此脚本的目的是生成一个数据框,该数据框是通过以面向对象样式编写的代码生成的。

问题是这个脚本的结果是一个空的数据框。

没有错误。

代码如下:

import pandas as pd


class Dataframe:
    def __init__(self):
        self.df = pd.DataFrame()

    def name(self):
        self.df['name'] = ["Hamza", "Carmen"]
        return print(self.df['name'])

    def age(self):
        self.df['age'] = [20, 15]
        return self.df['age']

    def sex(self):
        self.df['sex'] = ["Male", "Female"]
        return self.df['sex']

    def address(self):
        self.df['adress'] = ["Miami", "Seattle"]
        return self.df['adress']

    def print(self):
        return print(self.df)


x = Dataframe()
x.print()

【问题讨论】:

  • 您绝不会调用填充 df 的方法。所以它正确地返回一个空的df

标签: python pandas oop


【解决方案1】:

您需要调用您创建的方法来填充 DataFrame。

import pandas as pd


class Dataframe:
    def __init__(self):
        self.df = pd.DataFrame()
        self.name()
        self.age()
        self.sex()
        self.address()

    def name(self):
        self.df['name'] = ["Hamza", "Carmen"]
        return print(self.df['name'])

    def age(self):
        self.df['age'] = [20, 15]
        return self.df['age']

    def sex(self):
        self.df['sex'] = ["Male", "Female"]
        return self.df['sex']

    def address(self):
        self.df['adress'] = ["Miami", "Seattle"]
        return self.df['adress']

    def print(self):
        print(self.df)


x = Dataframe()
x.print()

【讨论】:

  • 对不起@SayedGouda,我复制的原始代码中有错误。二凡修好了。
【解决方案2】:

你必须调用类的方法

x = Dataframe()
x.name()
x.age()
...

【讨论】:

  • 上线开关self.df['name'] = ["Male", "Female"] 'name' -> 'sex'
【解决方案3】:

您没有调用 DataFrame().name/age 或您在类中定义的任何其他函数。这就是为什么它返回默认的 self.df 值为空的原因

【讨论】:

    【解决方案4】:

    在上面的答案中添加了一件小事:

    print() 函数返回无。所以return print(xx) 将产生值为 None,而不是您期望的值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-04
      • 2019-07-08
      • 2017-08-08
      • 2020-01-07
      • 2020-06-04
      • 1970-01-01
      • 1970-01-01
      • 2018-06-07
      相关资源
      最近更新 更多