Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.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
如何创建一个dataframe,在Python中提供多个dataframe的摘要?_Python_Python 3.x_Pandas - Fatal编程技术网

如何创建一个dataframe,在Python中提供多个dataframe的摘要?

如何创建一个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

我在一个文件夹中有多个CSV,我将其作为一个数据帧读取,并在for循环中循环

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]))