使用 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)
我是 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)