如何使用一些约束拆分数据帧?

2024-04-18 21:29:05 发布

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

假设,我有一个数据帧df。我想把这个数据帧分割成新的数据帧,这样工资总是在增加

>>> DATA = {'id':[1,2,3,4,5], 'salary':[1200,2300,2400,1200,2100] } 
>>> df = DataFrame(DATA)
>>> df
   id  salary
0   1    1200
1   2    2300
2   3    2400
3   4    1200
4   5    2100

从上面的数据框中,我需要得到如下两个:

   DataFrame 1            DataFrame 2
   -----------            -----------
   id  salary   |         id  salary
0   1    1200   |      0   4    1200
1   2    2300   |      1   5    2100
2   3    2400   |

有什么帮助吗?你知道吗


Tags: 数据iddataframedfdatasalary
1条回答
网友
1楼 · 发布于 2024-04-18 21:29:05

你可以这样做

>>> grouped = df.groupby((df.salary.diff() <= 0).cumsum())
>>> parts = [g.reset_index(drop=True) for k, g in grouped]
>>> for p in parts:
...     print(p)
...     
   id  salary
0   1    1200
1   2    2300
2   3    2400
   id  salary
0   4    1200
1   5    2100

这是因为当差值为<;=0时,您可以创建一个新组:

>>> df.salary.diff()
0     NaN
1    1100
2     100
3   -1200
4     900
Name: salary, dtype: float64
>>> df.salary.diff() <= 0
0    False
1    False
2    False
3     True
4    False
Name: salary, dtype: bool

每当一个新组开始时给我们一个True,由于True的值是1作为整数,我们可以使用cumsum给每个组一个新的数字:

>>> (df.salary.diff() <= 0).cumsum()
0    0
1    0
2    0
3    1
4    1
Name: salary, dtype: int32

相关问题 更多 >