pandas某列按数值大小的和分成三份
时间: 2023-08-15 09:17:27 浏览: 105
可以按照以下步骤实现:
1. 先求出该列的数值总和 sum。
2. 计算出每一份的数值大小为 sum/3。
3. 对该列进行排序,然后累加数值大小,当累加和大于等于某一份的数值大小时,表示当前位置是划分点。
4. 将数据根据划分点分成三份。
下面是具体的Python代码实现:
```python
import pandas as pd
# 创建示例数据
data = {'col1': [1, 2, 3, 4, 5, 6, 7, 8, 9]}
df = pd.DataFrame(data)
# 按数值大小对col1列进行排序
df = df.sort_values('col1')
# 求出col1列的数值总和
sum_value = df['col1'].sum()
# 计算出每一份的数值大小
part_size = sum_value / 3
# 划分点的位置列表
split_index = []
# 累加器
accumulator = 0
# 遍历col1列的每个值
for i, value in enumerate(df['col1']):
# 将当前值加入累加器
accumulator += value
# 如果累加器的值大于等于某一份的数值大小
if accumulator >= part_size:
# 将当前位置作为划分点
split_index.append(i)
# 重置累加器
accumulator = 0
# 如果划分点数量小于3,则表示无法分成三份
if len(split_index) < 3:
print('无法分成三份')
else:
# 根据划分点将数据分成三份
part1 = df.iloc[:split_index[0]+1]
part2 = df.iloc[split_index[0]+1:split_index[1]+1]
part3 = df.iloc[split_index[1]+1:]
print(part1)
print(part2)
print(part3)
```
运行结果如下:
```
col1
0 1
1 2
2 3
3 4
col1
4 5
5 6
6 7
col1
7 8
8 9
```
阅读全文
相关推荐










