Python3.9 pandas 将透视数据框保存为正确的 csv

我想要做的是将列Visits与Label列和 cmpgn_group2行进行聚合(求和),因此最终结果如下所示:


cmpgn_group2,Campaigns,Direct Entry,Search Engines,Social Networks,Websites                                                               

name_1,2618.0,2266.0,4386.0,691.0,1097.0

name_2,,1046.0,4045.0,81.0,139.0

name_3,27.0,6752.0,3266.0,12.0,250.0

但是,当我打印数据框时,我得到以下信息:


                 Visits                                                     

Label         Campaigns Direct Entry Search Engines Social Networks Websites

 cmpgn_group2                                                               

 name_1          2618.0       2266.0         4386.0           691.0   1097.0

 name_2             NaN       1046.0         4045.0            81.0    139.0

 name_3            27.0       6752.0         3266.0            12.0    250.0

在我的 Jupyter 笔记本中,这对于可读性来说很好,但是当我使用该to_csv()函数时,我想要一个合适的 csv(看起来像我上面显示的那样),不幸的是我得到的是这样的:


,Visits,Visits,Visits,Visits,Visits

Label,Campaigns,Direct Entry,Search Engines,Social Networks,Websites

 cmpgn_group2,,,,,

 name_1,2618.0,2266.0,4386.0,691.0,1097.0

 name_2,,1046.0,4045.0,81.0,139.0

 name_3,27.0,6752.0,3266.0,12.0,250.0

从我的角度来看,这不是一个合适的 csv,我无法在我的工作流程中使用它。


这是我的代码:


df = pd.read_csv('channels_26_Oct_2020.csv')

df2 = pd.pivot_table(df, values=['Visits'], columns=['Label'], index=' cmpgn_group2', aggfunc=np.sum)

print(df2)

df2.to_csv('channels_26_Oct_2020_2.csv')

对此正确的做法是什么?如何创建正确的 csv?


慕桂英546537
浏览 57回答 1
1回答

收到一只叮咚

原因是pivot_table创建多索引 DataFrame。您可以将它们折叠成一个索引,如下所示:df2 = pd.pivot_table(df, values=['Visits'], columns=['Label'], index=' cmpgn_group2', aggfunc=np.sum)df2.columns = df2.columns.map('_'.join)df2.to_csv('ex1.csv')输出 CSV 文件: cmpgn_group2,Visits_Campaigns,Visits_Direct Entry,Visits_Search Engines,Visits_Social Networks,Visits_Websites name_1,2618.0,2266.0,4386.0,691.0,1097.0 name_2,,1046.0,4045.0,81.0,139.0 name_3,27.0,6752.0,3266.0,12.0,250.0
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python