Python group by()之后只有一列

Python group by()之后只有一列,python,pandas,Python,Pandas,我从R转换到Python来满足我的大部分数据分析需求,我遇到了以下问题。可能是我对groupby()概念理解的结果 我有一个Pandas数据框架,并试图根据许多列总结数据。下面的代码告诉我我想要什么 df = df[(df["Lead Source"] != "chase") & (df["Lead Source"] != "SNE")] ndf = df[["Date", "Lead Source", "Model Group", "Leads"]].groupby(["Date",

我从R转换到Python来满足我的大部分数据分析需求,我遇到了以下问题。可能是我对groupby()概念理解的结果

我有一个Pandas数据框架,并试图根据许多列总结数据。下面的代码告诉我我想要什么

df = df[(df["Lead Source"] != "chase") & (df["Lead Source"] != "SNE")]
ndf = df[["Date", "Lead Source", "Model Group", "Leads"]].groupby(["Date", "Lead Source"]).sum()

这看起来很不错,但我注意到在运行以下内容时只有一个“真实”列。(仅供参考的ndf2仅为ndf的副本)

此外,对行的索引显示这并不是我所希望的

如何调整行以使列名显示在第一行上。输出应该如下所示

Date      Lead Source    Leads
1/1/2014  ...            ... 
          ...            ...
          ...            ...
您可以使用:

ndf.reset_index()
请注意,groupby操作正在创建具有。由于您是按
Date
Lead Source
进行分组的,因此这些是多索引的级别名称。之所以
Date
Lead Source
在列名下面显示一行,是因为Pandas试图表明这些是索引级别的名称,而不是列。(查看
ndf.index.names
)调用将索引级别移动到列中,并对索引重新编号

或者,最好在调用
groupby
时使用:

ndf = (df[["Date", "Lead Source", "Model Group", "Leads"]]
       .groupby(["Date", "Lead Source"], as_index=False).sum())
聚合时,
as_index=False
将阻止分组值用作索引值

ndf = (df[["Date", "Lead Source", "Model Group", "Leads"]]
       .groupby(["Date", "Lead Source"], as_index=False).sum())