将分组索引值作为参数传递给"groupby"中应用的函数



如何将分组索引值作为附加参数与组的子数据帧一起传递?

这个粗略的例子只是应用了一个单变量函数:

df = pd.DataFrame(data=np.random.randint(0,10, size=(3,3)), index = ['a','b','a'])
t = df.groupby(df.index).apply(lambda x: ''.join(str(x)))
0   1   2
a   8   6   7
b   6   2   4
a   8   2   4

此函数接受数据帧分组所依据的索引作为参数。

def f(g, indx):
return ''.join(str(x)) +'___' str(indx)

输出应为:

0
a '8  6  7  8  2  4___a'
b '6  2  4___b'

我知道这个例子很琐碎,但重点是将分组索引值作为参数与分组的子数据帧一起传递。我看到的解决方案是对分组对象进行迭代。我不确定它在解决方案性能方面是否良好。

Mathematica有MapIndexed函数,它可以完成这项工作,但没有预先分组。这个问题以前好像有人问过。

您可以通过.name获取索引名称。所以你做了一些类似的事情:

df.groupby(df.index).apply(lambda x: ''.join(str(x.values)) + '___' + str(x.name))

输出并不是你想要的,但我想我会很快把这些信息发给你。假设你可以把它清理成你想要的样子。

输出(旧版本的数据(:

a    [[8 4 6]n [6 8 9]]___a
b              [[1 3 2]]___b

最新更新