gpt4 book ai didi

python - 如何获取 Pandas 中 groupby 对象中每个项目的索引?

转载 作者:太空宇宙 更新时间:2023-11-04 03:28:44 25 4
gpt4 key购买 nike

我根据我想要的列在数据框上使用 groupby,然后我必须获取其组中每个项目的索引。我所说的索引是指,如果一个组中有 10 个项目,则索引从 0 到 9,而不是数据帧索引。

我的代码如下:

import pandas as pd

df = pd.DataFrame({'A': np.random.randint(0, 11, 10 ** 3), 'B': np.random.randint(0, 11, 10 ** 3),
'C': np.random.randint(0, 11, 10 ** 3), 'D': np.random.randint(0, 2, 10 ** 3)})

grouped_by = df.groupby(["A", "B", "C"])
groups = dict(list(grouped_by))
index_dict = {k: v.index.tolist() for k,v in groups.items()}
df["POS"] = df.apply(lambda x: index_dict[(x["A"], x["B"], x["C"])].index(x.name), axis=1)

这里的数据框只是一个例子。

有没有办法使用 grouped_by 来实现这个?

最佳答案

这是一个在虚拟变量上使用 cumcount() 来为每个组生成项目索引的解决方案。它也应该明显更快。

In [122]: df['dummy'] = 0
...: df["POS"] = df.groupby(['A','B','C'])['dummy'].cumcount()
...: df = df.drop('dummy', axis=1)

正如@unutbu 所说,使用起来更干净:

df["POS"] = df.groupby(['A','B','C']).cumcount()

关于python - 如何获取 Pandas 中 groupby 对象中每个项目的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32001083/

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