使用 MultiIndex 执行 GroupBy 后,从 Pandas DataFrame .csv 文件中删除引号和括号

Remove quotation marks and brackets from Pandas DataFrame .csv file after performing a GroupBy with MultiIndex

我是 pandas 的新手,如果我对事情的解释有误,请见谅。

我创建了一个数据框,如下所示:

        arrays = [array1, array2]
        index = pd.MultiIndex.from_arrays(arrays, names = ("name1", "name2"))
        df = pd.DataFrame({"name3": array3, "name4": array4}, index=index)

然后我使用索引和第二个最佳答案 here 中的代码执行加权平均。

        df2 = df.groupby(df.index).apply(lambda x: np.average(x.name3, weights=x.name4))
        print(df2)

控制台上的输出如下所示:

        (1, 2) 3
        (4, 5) 6
        (7, 8) 9

其中 (x,y) 是我分组依据的指数,末尾的数字是加权平均值。

当我导出到 .csv 文件时,我得到一个如下所示的文件:

        ,0
        "(1, 2)",3
        "(4, 5)",6
        "(7, 8)",9

这不是我想要的。我想要一个看起来像这样的 .csv 文件:

        name1,name2,avg
        1,2,3
        4,5,6
        7,8,9

我试过使用 reset.index() 但这不起作用。我想删除 .csv 文件开头的括号、引号和流氓 ,0。我怎样才能做到这一点?非常感谢。

使用 df.groupby 级别而不是索引:

df2 = df.groupby(level=df.index.names).apply(lambda x: np.average(x.name3, weights=x.name4))

# save the df2 to csv file
df2.rename('avg').reset_index().to_csv('data.csv', index=False)