如何将分组索引值作为附加参数与组的子数据帧一起传递?
这个粗略的例子只是应用了一个单变量函数:
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