You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Pandas DataFrame按行百分比生成特定重复数值列?

解决方法

你的问题出在np.resize是循环重复原数组来补全长度,而不是按分段连续填充。要实现按10%区间连续赋值,有两种简洁的方式:

方法一:手动构造分段数组

先计算每个数值需要重复的行数,再用np.repeat生成连续的数组:

import numpy as np
import pandas as pd

# 假设你的DataFrame是df,总行数153
n = len(df)
# 计算每个区间的行数:基础行数+余数分配
base_rows = n // 10  # 15行
extra_rows = n % 10   # 剩余3行,分配给前3个区间
# 生成每个数值对应的重复次数
repeat_counts = [base_rows + 1 if i < extra_rows else base_rows for i in range(10)]
# 生成连续的目标数组
target_values = np.repeat(range(10, 110, 10), repeat_counts)
# 赋值给DataFrame
df['new_column'] = target_values

这样前3个数值(10、20、30)各占16行,后面7个数值各占15行,总和刚好153行,完全符合“每10%区间连续赋值”的要求。

方法二:用pd.qcut自动分区间

如果想更简洁,用pd.qcut可以自动将行索引分成10个等频区间,直接映射到目标数值:

import pandas as pd

# 给DataFrame添加新列
df['new_column'] = pd.qcut(df.index, q=10, labels=range(10, 110, 10))
# 转换为整数类型(可选)
df['new_column'] = df['new_column'].astype(int)

qcut会自动处理行数不是10倍数的情况,保证每个区间的行数尽可能均匀,完美匹配你的需求。

内容的提问来源于stack exchange,提问作者user308827

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 11:37:20