gpt4 book ai didi

python - 如何获取数据帧的子组开始完成索引

转载 作者:行者123 更新时间:2023-12-03 15:20:59 24 4
gpt4 key购买 nike

df=pd.DataFrame({"C1":['USA','USA','USA','USA','USA','JAPAN','JAPAN','JAPAN','USA','USA'],'C2':['A','B','A','A','A','A','A','A','B','A']})

C1 C2
0 USA A
1 USA B
2 USA A
3 USA A
4 USA A
5 JAPAN A
6 JAPAN A
7 JAPAN A
8 USA B
9 USA A
这是我的问题的一个水版本,所以为了简单起见,我的目标是迭代数据帧的一个子组,其中 C2 包含 B。如果 B 在 C2 中 - 我查看 C1 并需要整个组。所以在这个例子中,我看到 USA 并且它从索引 0 开始到 4 结束。另一个是在 8 和 9 之间。
所以我想要的结果是这样的索引:
[[0,4],[8,9]] 
我尝试使用 groupby 但它不起作用,因为它将所有美国组合在一起
my_index = list(df[df['C2']=='B'].index)
my_index
会给 1,8 但如何开始/结束?

最佳答案

这是一种方法,您可以首先屏蔽至少具有 1 B 的组上的数据帧,然后抓取索引并创建一个辅助列来聚合第一个和最后一个索引值:

s = df['C1'].ne(df['C1'].shift()).cumsum()
i = df.index[s.isin(s[df['C2'].eq("B")])]
p = np.where(np.diff(i)>1)[0]+1
split_ = np.split(i,p)
out = [[i[0],i[-1]] for i in split_]
print(out)
[[0, 4], [8, 9]]

关于python - 如何获取数据帧的子组开始完成索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67150765/

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