繁体   English   中英

根据在 pandas 中重复的特定范围对 dataframe 进行切片

[英]Slice a dataframe based on a specific range repeated over a column in pandas

我有一个 dataframe ,其中一列有一个计数器。 计数器从 0 到 127 并重复。 dataframe 的开始和结束可以有切片计数器,例如第一行可以从 32 开始,但会在 127 结束,然后是 0-127 重复切片,最后一个切片可能突然结束,不一定是 127。如下所示,

32
33
.
.
127
0
1
.
.
127
0
1
.
.
127
0
1
.
15

有没有办法可以将 dataframe 分成不同的集合,每个集合包含 128 行?

好吧,如果总行数不是 128 的倍数,那么您将无法将 dataframe 分成子集,每个子集恰好包含 128 行。

但是将 dataframe 切片为 128 行是微不足道的,其中最后一个使用iloc最多有128 行:

for i in range(0, len(df), 128):
    subset = df.iloc[i:i+128]
    # process subset...

如果你想根据计数器列进行切片,第一个和最后一个切片最多有 128 行,你可以使用 GroupBy:

groups = df.groupby((df['counter'] == 0).cumsum())
for i, g in groups:
    print('Processing group', i)
    subset = g
    # process subset

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM