Pandas数据帧组不会删除分组键

时间:2018-01-17 04:58:33

标签: python pandas group-by pandas-groupby

我试图在文档here中关注groupby的示例。根据示例,我首先创建一个数据框:

df = pd.DataFrame({'A': 'a a b'.split(), 'B': [1,2,3], 'C': [4,6, 5]})

现在,让我们分组标记为" A"并通过其值来总结另外两个:

df.groupby('A').sum()

这是合理的事情,按照" A"和生产:

   B   C
A
a  3  10
b  3   5

现在,让我们尝试相同的事情,但明确定义sum()函数:

df.groupby('A', group_keys=False).apply(lambda x: np.sum(x))

由于一些莫名其妙的原因,这也决定将该功能应用于" A"的条目。柱。当然,其他数字函数(如square)会抛出错误,因为它们应用于字符串。实际上,它会导致上面链接中提供的示例无效。

    A  B   C
A
a  aa  3  10
b   b  3   5

我尝试了python 2.7和3.6,结果相同。 如何让它做智能的事情,而不是将函数应用到我正在分组的列?

2 个答案:

答案 0 :(得分:1)

除了groupby.apply中的组变量之外,apply除了删除组变量之外,可能还没有智能的方法:

df.groupby('A').apply(lambda g: g.drop('A', 1).sum())

#   B   C
#A
#a  3  10
#b  3   5

答案 1 :(得分:1)

您还可以指定要选择的列。

df.groupby('A')["B", "C"].apply(lambda x: np.sum(x))

    B   C
A       
a   3   10
b   3   5