【问题标题】:Can I make a series from a python class?我可以从 python 类制作一个系列吗?
【发布时间】:2021-03-15 12:38:55
【问题描述】:

我正在研究如何用python制作账本。

我想从“购买类”的项目中制作一个系列:使用我在 set_item() 输入的值,以便在 wallet_info 过程中打印“名称、价格、更改” ,但我不知道如何解决这个问题。

这是我的不完整代码,请先不要关心底部的def print_r和elifs:

import pandas as pd
args=sys.argv[1:]


class Buy:
    def __init__(self, name, money):
        self.name=name
        self.wallet=1000
        self.money=money

    def print_r(self):
        print(self.name, self.money, self.wallet)
        
    def wallet_info(self):
        self.name=name
        self.wallet-=self.money
        self.money=money
        print("you have", self.wallet, "now")   
        while True:
            answer=input("is it finished? (y/n) ")
            if answer=="y" or answer=="n":
                break
            else:
                print("wrong answer")
                continue
            if answer=="y":
                break
            else:
                continue
            
def set_item():
    name=input("what? ")
    money=int(input("how much? "))
    item=Buy(name,money)
    return item

def run():
    buyname=[]
    buymoney=[]
    for i in args:
        if i=="w":
            item=set_item()
            buyname.append(name)
            buymoney.append(money) 
            buylist=pd.Series(dtype='int', data=buymoney, index=buyname)
            buylist.loc[name]=money
            wallet_info(name)
        elif i=="r":
            list1(self)
        elif i=="x":
            x()
        else:
            print("wrong input")

if __name__=="__main__":
    run()

如果你能帮助我,我将非常感激。

【问题讨论】:

  • 我想从“购买类”的项目中制作一个系列。不,你没有。如果你想为Buy 类存储对象,你最好使用一个普通的列表。 Pandas 基于 numpy,更擅长存储数值、日期或时间值以及字符串。如果你想走 Pandas 的方式,你应该使用 DataFrame,其中列是 Buy 类的属性,直接存储 simple 类型。

标签: python pandas function class series


【解决方案1】:

您可以将此方法添加到您的课程中:

from copy import copy

@property
def pds(self):
    cls_dict = copy(self.__dict__)
    # # dropping all attributes which are not to be saved
    # self.drop = ['name']
    # for item in self.drop:
    #     if item in cls_dict.keys():
    #         del cls_dict[item]
    # creating a series from the resulting class-dict
    pds = pd.Series(cls_dict)
    return pds

这将通过调用buy.pds 返回一个带有您存储在购买实例buy 中的属性的熊猫系列。如果你想修改类字典,我建议你导入copy 并修改复制的。否则copy 是不必要的。

【讨论】:

    猜你喜欢
    • 2016-09-23
    • 1970-01-01
    • 2019-03-10
    • 1970-01-01
    • 2018-05-02
    • 1970-01-01
    • 2012-06-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多