熊猫获得连续的行

use*_*672 4 python dataframe pandas

我想将 Pandas 中的数据帧拆分为多个数据帧。

我的数据框有一个名为“C”的列,其中一些行包含 0。我希望做的是使用带有 0 的行作为分隔符,因此我在列“C”中获得带有值的连续行。我不认为 groupby 是要走的路,因为它需要具有相同值的行,这并不是我想要实现的目标,除非我将它与 .diff() 一起使用?我不知道。我觉得我现在已经尝试了很多东西,但是 Python 和 Pandas 不是我最强的语言,所以我不确定可能性是什么。

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

前:

一种 C
1 4
2 5
3 0
4 5
5 4
6 5

后:

一种 C
1 4
2 5
一种 C
4 5
5 4
6 5

如果不清楚,我正在使用 Python,任何帮助表示赞赏。非常感谢。

jez*_*ael 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
Run Code Online (Sandbox Code Playgroud)