如何创建一个dataframe,在Python中提供多个dataframe的摘要?
我在一个文件夹中有多个CSV,我将其作为一个数据帧读取,并在for循环中循环如何创建一个dataframe,在Python中提供多个dataframe的摘要?,python,python-3.x,pandas,Python,Python 3.x,Pandas,我在一个文件夹中有多个CSV,我将其作为一个数据帧读取,并在for循环中循环 df1=pd.DataFrame({"year":[2008,2008,2009,2008,2009], "product":["wood","paper","rocks","rocks","mint"], "cost&qu
df1=pd.DataFrame({"year":[2008,2008,2009,2008,2009],
"product":["wood","paper","rocks","rocks","mint"],
"cost":[200,300,90,78,300]})
df2=pd.DataFrame({"year":[2008,2008,2009,2008,2009],
"product":["grass","wood","mint","sand","bottle"],
"cost":[900,309,908,178,90]})
我想创建一个名为“summary_report”的数据框,同时循环这些数据框并存储在summary_report数据框中
忽略颜色
预期报告:
一种汇总表,列中有产品和每年成本的唯一计数,行中有数据框名称。与新列一起使用,以区分每个数据框,然后传递到并最后由和进行重塑:
编辑:
不能这样做,因为我循环文件在一个for循环,所以在一个时间我只会有一个文件,我需要得到一个统计数据,然后存储在一个列表中,然后for循环将采取第二个文件a做同样的。。。在那之后,康卡特警长可能会帮忙。我们可以采用这种方法吗?dfs=[如果文件中有“.csv”,则os.listdir(路径)中的文件对应文件]。。。。因为我在dfs中比在更深入的过程中。这就是我阅读文件的方式
df = (pd.concat([df1.assign(g = 'df1'), df2.assign(g = 'df2')])
.groupby(['g','year'])
.agg(product_count=('product', 'size'),
cost_total=('cost','sum'))
.stack()
.unstack([1,2]))
print (df)
year 2008 2009
product_count cost_total product_count cost_total
g
df1 3 578 2 390
df2 3 1387 2 998
dfs = [pd.read_csv(file).assign(g = f'df{i}')
for i, file in enumerate(os.listdir(path), 1) if ".csv" in file]
df = (pd.concat(dfs)
.groupby(['g','year'])
.agg(product_count=('product', 'size'),
cost_total=('cost','sum'))
.stack()
.unstack([1,2]))