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,任何帮助表示赞赏。非常感谢。
您可以创建数据帧列表:
#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)
| 归档时间: |
|
| 查看次数: |
60 次 |
| 最近记录: |