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
都将是数据帧对象。