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

问题描述 投票:0回答:1

我是pandas的新手,所以如果我的解释有误,请原谅。

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

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

然后我用指数进行加权平均,用第二个最高答案的代码。此处.

        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。我如何才能做到这一点?非常感谢。

python pandas dataframe pandas-groupby export-to-csv
1个回答
2
投票

使用。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)
© www.soinside.com 2019 - 2024. All rights reserved.