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