python - 我必须将每一列存储在数据框中(8 个五分位)
问题描述
我有一个包含 4 列的数据框,对于每一列,我们必须进行分桶(将数据分布在 8 个桶中),这样应该对第一列和第二列进行分桶,以此类推,无需手动指定列名
这是我正在尝试的代码
for col in df3.columns[0:]:
cb1 = np.linspace(min(col), max(col), 11)
df3.insert(2 ,'buckets',pd.cut(col, cb1, labels=np.arange(1, 11, 1)))
print(df3[col])
这里 df3 是样本数据集
苹果橙香蕉
5 2 6
6 4 6
2 8 9
4 7 0
预期的输出是
苹果橙香蕉桶_苹果桶_橙桶_香蕉
5 2 6 1 3 2
6 4 6 1 1 4
2 8 9 2 1 8
4 7 0 5 4 1
这里的桶列是指定相对于数据的桶号
解决方案
由于输出是完全随机的,因此您的数据列和存储桶编号之间没有相关性,在这种情况下您应该单独生成存储桶。
for c in df.columns:
df['bucket_' + c] = np.random.randint(8, size=(len(df))) + 1
df # your random bucket df.
如果您希望存储桶大小相等:
for c in df.columns:
arr = np.arange(8) + 1
arr = np.repeat(arr, int(len(df))/8) # your df has to be divisible by 8
np.random.shuffle(arr) # shuffle the array.
df['bucket_' + c] = arr
推荐阅读
- java - 构造函数和实例变量之间的区别
- php - 如何更有效地比较大海捞针
- prolog - 优化 clp(FD) 标记
- asp.net-core - Kestrel HTTPS 重定向导致没有响应,调试日志“应用程序在未读取整个请求正文的情况下完成”。
- python-3.x - Python:写入文件变音符号作为转义字符序列
- assembly - 汇编语言中的结构
- ios - 更新到最新版本的 Visual Studio 和 Xamarin 后无法启动应用程序
- sql - SQL:将 table1 和 table2 与合并的行链接,然后链接到 table3
- javascript - jQuery (JavaScript):了解从不同页面加载文档时的导航 ID
- javascript - 如何在更改事件javascript上调用触发器更改