迭代python中对象内的变量

时间:2018-06-12 13:41:54

标签: python python-3.x pandas oop

好的,这可能是一个非常愚蠢的问题,但是......

我有一个对象x,其中包含许多pandas数据帧(df1df2df3以供参数使用)

程序运行完毕后,我想将每个数据帧导出到自己的csv文件中。目前,我在x内的函数看起来像这样:

def export(self, path):
    self.df1.to_csv(path+"_df1.csv")
    self.df2.to_csv(path+"_df2.csv")
    self.df3.to_csv(path+"_df3.csv")

它可以工作(我可以使用x.export(somepath),但我不得不改变它,因为我想要保留在对象中的数据发生了变化。任何人都可以告诉我是否有一种方法可以简单地迭代所有对象中的变量(它们都是相同的格式)和(在这种情况下)将它们全部转储到各自的.csv文件中?

由于

1 个答案:

答案 0 :(得分:2)

您可以迭代__dict__以检索属性名称和数据框对象。您可以检查对象类型,以避免在非数据框的内容上调用.to_csv

以下是一些原型解决方案的示例代码。

class A():
    def __init__(self):
        self.x = pd.DataFrame([[1,2],[3,4]])
        self.y = pd.DataFrame([[5,6],[7,8]])

    def export(self, path):
        for k, v in self.__dict__.items()
            if isintance(v, pd.DataFrame):
                v.to_csv('{}_{}.csv'.format(path, k)

a = A()
a.export('dataframes')