Python 熊猫有连续的行

Python 熊猫有连续的行,python,pandas,dataframe,Python,Pandas,Dataframe,我想将pandas中的一个数据帧拆分为多个数据帧 我的dataframe有一个名为“C”的列,其中一些行包含0。我希望做的是使用带0的行作为分隔符,这样我可以得到列“C”中具有值的连续行。我不认为groupby是一种可行的方法,因为它需要具有相同值的行,而这正是我试图实现的,除非我将它与.diff()一起使用,否则可能会吗?我不确定。我觉得我现在已经尝试了很多东西,但是Python和Pandas不是我最擅长的语言,所以我不确定有什么可能 然而,我已经设法使用我自己的for循环逻辑和if语句手动遍

我想将pandas中的一个数据帧拆分为多个数据帧

我的dataframe有一个名为“C”的列,其中一些行包含0。我希望做的是使用带0的行作为分隔符,这样我可以得到列“C”中具有值的连续行。我不认为groupby是一种可行的方法,因为它需要具有相同值的行,而这正是我试图实现的,除非我将它与.diff()一起使用,否则可能会吗?我不确定。我觉得我现在已经尝试了很多东西,但是Python和Pandas不是我最擅长的语言,所以我不确定有什么可能

然而,我已经设法使用我自己的for循环逻辑和if语句手动遍历所有帧使其工作,但这是一个缓慢的过程,我希望能够改进它

之前:

A. C 1. 4. 2. 5. 3. 0 4. 5. 5. 4. 6. 5.
您可以创建数据帧列表:

#compare for equal 0
m = df['C'].eq(0)
#filter out 0 rows and grouping by cumulative sum of mask
dfs = [x for _, x in df[~m].groupby(m.cumsum())]
print (dfs)
[   A  C
0  1  4
1  2  5,    A  C
3  4  5
4  5  4
5  6  5]

print (dfs[1])
   A  C
3  4  5
4  5  4
5  6  5

你能解释一下“x代表x”和groupby(m.cumsum)吗?我对后者的理解正确吗?只有当索引为0,1,2,3等时,后者才起作用?@Pythonistaanonymous-当然,这是列表理解,第一个组名并不重要,因此分配给
\u
并在变量
x
中仅提取
数据帧
,谢谢您的回复!我的角色有限,所以我会尽量简短。为什么我们要使用cumsum()来创建groupby?据我所知,cumsum()将在一行中计算所有值。那么它如何使用它来将行放在一起呢。@user15227672-我使用带掩码的cumsum
m=df['C']。eq(0)
,您可以检查
print(m)
print(m.cumsum())
如何创建组。这是有意义的!我知道它现在在做什么。只要掩码为真(意味着有一个零),就只累积值,这样当C有一个值时,它保持相同的累积值,因此它们将被分组在一起。谢谢你抽出时间。