【问题标题】:How to convert a list to a data frame in python?如何在python中将列表转换为数据框?
【发布时间】:2021-10-16 08:46:52
【问题描述】:

所以,我有一个看起来像这样的列表:

      name=[["product 1",15,male,yes]
             ["product 2",10,female,yes]
             ["product 2",10,female,yes]
             ["product 3",none,female,yes]
             ["product 4",20,yes,male]]
     and so on...

我希望使用类函数来获得这样的结果:

 [Item("product 1",15,"male","yes"), 
  Item("product 2",10,"female", "yes"), 
  Item("product 2",10,"female", "yes"), 
  Item("product 3",none,"female","no"), 
  Item('product 4",20,"male","yes")...so on]

接下来我希望删除缺少元素的部分:

[Item("product 1",15,"male","yes"), 
 Item("product 2",10,"female", "yes"), 
 Item("product 2",10,"female", "yes"), 
 Item('product 4",20,"male","yes")...so on]

对于产品 4,订单已更改。还有一些像产品 4 一样的产品,也是乱序的(它们乱序的方式也不同。)

我已经为“上课”做了一些准备,但我不知道在这里做什么:

class Item():
__name = ""
__cost = 0
__gender = ""
__prime = ""

def __init__(self, name, cost, gender, prime):
    self.__name = name
    self.__cost = cost
    self.__gender = gender
    self.__prime = prime

任何人都可以展示 Python 代码来做到这一点吗?提前谢谢你。

【问题讨论】:

  • 只用字典

标签: python list dataframe class data-cleaning


【解决方案1】:

答案很明显,不是吗?我认为你让事情变得更难了。

timr@tims-gram:~/src$ cat x.py
name=[
    ["product 1",15,"male","yes"],
    ["product 2",10,"female","yes"],
    ["product 2",10,"female","yes"],
    ["product 3",None,"female","yes"],
    ["product 4",20,"male","yes"]
]

class Item():
    _name = ""
    _cost = 0
    _gender = ""
    _prime = ""

    def __init__(self, name, cost, gender, prime):
        self._name = name
        self._cost = cost
        self._gender = gender
        self._prime = prime

    def __repr__(self):
        return f"Item({self._name},{self._cost},{self._gender},{self._prime})"

mylist = [Item(*k) for k in name if k[1]]
print(mylist)

输出:

timr@tims-gram:~/src$ python x.py
[Item(product 1,15,male,yes), Item(product 2,10,female,yes), Item(product 2,10,female,yes), Item(product 4,20,male,yes)]
timr@tims-gram:~/src$ 

【讨论】:

  • 是否应该有一个额外的步骤来添加“用于数据安全层的私有变量?”或者已经得到保护。
  • “安全”来自什么?这只是 Python 脚本中的数据结构。你想象的攻击媒介是什么?
  • 哦,这是因为我认为 Python 让我们能够通过在名称前添加双下划线来在类中创建“私有”方法和变量。
  • 这只是一个约定。 Python 对类没有任何隐私控制。
  • 哦,我明白了。谢谢你的澄清。
猜你喜欢
  • 2018-10-30
  • 1970-01-01
  • 1970-01-01
  • 2021-12-13
  • 1970-01-01
  • 2016-02-05
  • 2021-04-12
  • 2021-04-19
相关资源
最近更新 更多