我有一个数据框,我想按特定列(或者换句话说,按特定列中的值)对它进行分组。我可以通过以下方式做到这一点:grouped = df.groupby(['ColumnName'])
.
我把这个操作的结果想象成一个表格,其中一些单元格可以包含一组值而不是单个值。为了得到一个普通的表格(即每个单元格只包含一个值的表格),我需要指出我想使用什么函数将单元格中的值集转换为单个值。
例如,我可以用它们的总和,或者用它们的最小值或最大值替换一组值。我可以通过以下方式做到这一点:grouped.sum()
或者grouped.min()
等等。
现在我想对不同的列使用不同的函数。我发现我可以通过以下方式做到这一点:grouped.agg({'ColumnName1':sum, 'ColumnName2':min})
.
但是,由于某些原因,我无法使用first
. 更详细地说,grouped.first()
有效,但grouped.agg({'ColumnName1':first, 'ColumnName2':first})
无效。结果我得到一个 NameError: NameError: name 'first' is not defined
。所以,我的问题是:为什么会发生以及如何解决这个问题。
添加
在这里,我找到了以下示例:
grouped['D'].agg({'result1' : np.sum, 'result2' : np.mean})
可能我也需要使用np
吗?但在我的情况下,python 无法识别“np”。我应该导入它吗?