Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用Loader将数据框对象作为单独的表加载?_Python_Pandas - Fatal编程技术网

Python 如何使用Loader将数据框对象作为单独的表加载?

Python 如何使用Loader将数据框对象作为单独的表加载?,python,pandas,Python,Pandas,我在test文件夹中有一堆CSV文件。我将它们加载到表对象中,如下所示: from load_csv import Loader tables = Loader("C://myfolder") tables.TestTable1\ .query("ID not in [1, 2, 3]")\ .groupby('ID')\ .agg('sum') 这是myfolder中的层次结构: myfolder - TestTable1.csv - TestTable2.cs

我在
test
文件夹中有一堆CSV文件。我将它们加载到
对象中,如下所示:

from load_csv import Loader
tables = Loader("C://myfolder")
tables.TestTable1\
    .query("ID not in [1, 2, 3]")\
    .groupby('ID')\
    .agg('sum')
这是
myfolder
中的层次结构:

myfolder
 - TestTable1.csv
 - TestTable2.csv
 - TestTable3.csv
然后,我可以将每个CSV文件作为单独的表进行查询,如下所示:

from load_csv import Loader
tables = Loader("C://myfolder")
tables.TestTable1\
    .query("ID not in [1, 2, 3]")\
    .groupby('ID')\
    .agg('sum')
如何使用内存中的pandas DataFrame对象列表而不是
加载程序(“C://myfolder”)
创建相同的

更新:


请注意,我从Azure Blob存储加载了数据帧。因此,解决方案应以<代码> [DF1,DF2,DF3] < /代码>为出发点。我不能使用
C://myfolder

使用类怎么样

class TableLoader(object):

    def __init__(self, path_to_csvs):
        self.path_to_csvs = path_to_csvs
        self.set_objects()

    def set_objects(self):
        for file in os.listdir(self.path_to_csvs):
            if file.endswith('.csv'):
                filename = file[:-4]
                f = pd.read_csv(file)
                setattr(self, filename, f)

tables = TableLoader(r'C:/Users/Jarad/Downloads/csv_directory')
setattr部分将把每个CSV文件设置为类的属性,这样您就可以使用点表示法访问数据帧


编辑:传递已存在数据帧的可能解决方案

class DfLoader(object):
    def __init__(self, *args):
        self.args = args
        self.set_dfs()
    def set_dfs(self):
        for i,arg in enumerate(self.args):
            name = 'df{}'.format(i)
            setattr(self, name, arg)

table = DfLoader(df1, df2, df3)

不清楚在类内部如何命名它们。

使用类如何

class TableLoader(object):

    def __init__(self, path_to_csvs):
        self.path_to_csvs = path_to_csvs
        self.set_objects()

    def set_objects(self):
        for file in os.listdir(self.path_to_csvs):
            if file.endswith('.csv'):
                filename = file[:-4]
                f = pd.read_csv(file)
                setattr(self, filename, f)

tables = TableLoader(r'C:/Users/Jarad/Downloads/csv_directory')
setattr部分将把每个CSV文件设置为类的属性,这样您就可以使用点表示法访问数据帧


编辑:传递已存在数据帧的可能解决方案

class DfLoader(object):
    def __init__(self, *args):
        self.args = args
        self.set_dfs()
    def set_dfs(self):
        for i,arg in enumerate(self.args):
            name = 'df{}'.format(i)
            setattr(self, name, arg)

table = DfLoader(df1, df2, df3)

不清楚在类内部如何命名它们。

这正是我想要避免的。我希望能够执行
TableLoader([df1,df2,df3])
,而不是将路径传递到本地文件夹。我以不同的方式(从Azure Blob存储)加载数据帧。因此,我不能做
C:/Users…
如何根据我的情况调整您的解决方案?我想它可能差不多合适。谢谢。
表格加载器([df1,df2,df3])
。。在这种情况下,dfs是什么?数据帧对象已经存在?是的,每个
dfx
都将是一个数据帧对象。这正是我想要避免的。我希望能够执行
TableLoader([df1,df2,df3])
,而不是将路径传递到本地文件夹。我以不同的方式(从Azure Blob存储)加载数据帧。因此,我不能做
C:/Users…
如何根据我的情况调整您的解决方案?我想它可能差不多合适。谢谢。
表格加载器([df1,df2,df3])
。。在这种情况下,dfs是什么?数据帧对象已经存在?是的,每个
dfx
都将是数据帧对象。