gpt4 book ai didi

python - 使用索引的函数聚合失败

转载 作者:太空宇宙 更新时间:2023-11-03 17:11:21 26 4
gpt4 key购买 nike

对于这个简单的问题,我深表歉意,我是一个 R 用户,对 python 相对较新。

考虑以下最小示例:

df = pd.DataFrame({'A' : ['foo', 'bar', 'foo', 'bar',
'foo', 'bar', 'foo', 'foo'],
'B' : ['one', 'one', 'two', 'three',
'two', 'two', 'one', 'three'],
'C' : range(0,8),
'D' : range(0,8)})

以下会引发错误:

def myf(x):
return x[2]

df[["A","C","D"]].groupby('A').aggregate(myf)

所需的输出将是一个 pandas 表,如下所示:

| A     | myf C | myf D |
-------------------------
| foo | 2 | 2 |
| bar | 3 | 3 |

从评论和文档来看,似乎可以做这样的事情:

def myf(x):
return x.first

获取第一项,但尚不清楚如何构造一个仍能获取适当索引值的非内置方法。像这样的东西:

def myf(x):
return Series(x[1], index=x.index)

似乎不起作用。

最佳答案

来自Aggregation文档-

Aggregating functions are ones that reduce the dimension of the returned objects, for example: mean, sum, size, count, std, var, sem, describe, first, last, nth, min, max. This is what happens when you do for example DataFrame.sum() and get back a Series.

如果您遵循@DSM的建议并将print(x)添加到myf,您将看到您将传递一个Series 使用原始 DataFrame 中的 index。因此,如果您通常要求 x[1],则某些 Series 将没有该索引

您可以return x.iloc[0],这样您就可以依赖位置,而不是基于标签的索引。换句话说,您选择分组的 Series 中的第一项,而不是原始 DataFrame 中恰好具有标签“1”的项。

关于python - 使用索引的函数聚合失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34052650/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com