python - 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
我已经检查了这个问题并且这个,但我事先不知道值/行的数量......我还检查了另一个问题,所以我考虑使用带有正则表达式的拆分。但我只知道序列会升序,不能保证这些值是连续的,所以它不能按预期工作。
这有可能实现吗?我提前感谢任何帮助!
解决方案
你知道只有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
推荐阅读
- vba - 在没有定义范围的vba中插入SUMIF公式
- python - BeautifulSoup - 将字符串值转换为嵌套 for 循环内的 int 然后排序
- ios - 按日期字符串对字典数组进行排序
- kubernetes - 将微服务隔离到 API 网关
- python - 被告知使用 tkinter Checkbutton 的选择方法。它不起作用。如果存储的设置为真,我该如何破解?
- keras - 图像上的 K 折交叉验证
- android - 错误:包 com.getcapacitor.community.firebasecrashlytic 不存在
- json - 使用动态键解析 json
- java - 如何在 ExtensionContext.Store 中存储可变对象
- android - 导航抽屉主题在点击时重置