首页 > 解决方案 > Pandas - 根据列中的排序顺序拆分数据帧

问题描述

我有一个具有这种结构的熊猫数据框:

df
Val1 Val2 Col1 Col2
1    1    0    3
1    2    2    4
2    1    2    3
3    2    2    5
1    2    3    4
2    1    3    1
3    4    2    1

基本上,我事先根据 val1 和 val2 的值对数据帧进行排序,所以我知道之后我会有两个升序。我想要的是根据两个序列将这个 df 拆分为两个新的 df,在我的示例中是这样的:

df1
Val1 Val2 Col1 Col2
1    1    0    3
1    2    2    4
2    1    2    3
3    2    2    5

df2
Val1 Val2 Col1 Col2
1    2    3    4
2    1    3    1
3    4    2    1

我已经检查了这个问题并且这个,但我事先不知道值/行的数量......我还检查了另一个问题,所以我考虑使用带有正则表达式的拆分。但我只知道序列会升序,不能保证这些值是连续的,所以它不能按预期工作。

这有可能实现吗?我提前感谢任何帮助!

标签: pythonpandasdataframe

解决方案


你知道只有2个序列吗?如果是这样:

mask = df.Val1 < df.Val1.shift(1)
change_point = mask[mask].index[0]
df1 = df[df.index < change_point]
df2 = df[df.index >= change_point].reset_index(drop=True)

然后df1就会

   Val1  Val2  Col1  Col2
0     1     1     0     3
1     1     2     2     4
2     2     1     2     3
3     3     2     2     5

df2

   Val1  Val2  Col1  Col2
0     1     2     3     4
1     2     1     3     1
2     3     4     2     1

推荐阅读