我需要找到一种通过两种条件将熊猫数据帧分割成几部分的快速解决方案。
测试数据:
import pandas as pd
df=pd.DataFrame({'col1':[1,2,23,4,5,6],'col2':[10,11,12,13,14,89]})
col1 col2
0 1 10
1 2 11
2 23 12
3 4 13
4 5 14
5 6 89
需要将其划分为多个部分(请注意,需要计算出0.1多人游戏才能进行划分):
divider_number = 2
split_value_1 = df['col1'].sum()/divider_number
split_value_2 = df['col2'].sum()/divider_number
eps_1 = 0.1* split_value_1
eps_2 = 0.1* split_value_2
其中每一行都有总和为的行
split_value_1 - eps_1 < sum_col1 < split_value_1 + eps_1
和:
split_value_2 - eps_2 < sum_col2 < split_value_2 + eps_2
我的意思是,每帧最后都包含行,这些行的第1列的元素之和与第2列的元素之和接近所有其他拆分数据帧的元素之和。
我尝试遍历每一行,收集值,然后检查while循环内的条件,这些数据会重排数据帧,但是这种解决方案似乎非常粗糙。
像这样的预期结果:
df1:
col1 col2
0 1 10
1 2 11
2 23 12
df2:
col1 col2
3 4 13
4 5 14
5 6 89
请注意,对于divide_number> 2,存在多个数据帧作为输出的外壳。
谢谢大家的辛苦:)