在python中对每个唯一id的数据进行切片

2024-04-20 10:05:23 发布

您现在位置:Python中文网/ 问答频道 /正文

id       val
a         1
a         1
a         2  
a         2
a         1
a         2
a         2
b         1 
b         1
b         2 
b         2 
b         1
b         1
b         2
b         2 
b         3

我试图根据val的长度对每个id的数据进行切片。我希望每4行对数据进行切片

对于id a,数据切片的索引值是[0,4] 对于id b,数据切片的索引值是[7,11,15]

我可以为每个索引的入站和出站值手动执行此操作

例如

 df2=df[0:3]
 remaining code

 df2a=df[4:6]
 remaining code

 df2b = df2.append(df2a, ignore_index=True)     

我知道这不是一个好的编程实践,因为我还是python的新手,所以我需要您的帮助,通过循环来简化这个过程。我的数据框中有超过百万条记录。你知道吗


Tags: 数据idtruedfindexcode切片val
1条回答
网友
1楼 · 发布于 2024-04-20 10:05:23

您可以创建一个subgroup变量,该变量每四行表示一个不同的组,然后您可以按idsubgroups变量分组,并分别分析每个组:

df['subgroups'] = df.groupby('id').cumcount() // 4

for _, g in df.groupby(['id', 'subgroups']):
    print(g)

#  id  val  subgroups
#0  a    1          0
#1  a    1          0
#2  a    2          0
#3  a    2          0

#  id  val  subgroups
#4  a    1          1
#5  a    2          1
#6  a    2          1

#   id  val  subgroups
#7   b    1          0
#8   b    1          0
#9   b    2          0
#10  b    2          0

#   id  val  subgroups
#11  b    1          1
#12  b    1          1
#13  b    2          1
#14  b    2          1

#   id  val  subgroups
#15  b    3          2

相关问题 更多 >