【发布时间】:2019-03-30 22:09:53
【问题描述】:
我正在处理一个总共有 4 列的数据框,我想将该数据框的每一列迭代地分成 8 个相等的部分。应为每列的单独列中的数据分配 bin 编号。 即使为任何不同的数据框提供了不同的列名,该代码也应该可以工作。 这是我试过的代码。
for c in df3.columns:
df3['bucket_' + c] = (df3.max() - df3.min()) // 2 + 1
buckets = pd.cut(df3['bucket_' + c], 8, labels=False)
尊重的 bin 列显示分配给每个数据点的 bin 编号,根据它们将落入的范围(使用 pd.cut 将列切割成 8 个相等部分)。 提前致谢!!
样本数据
gp1_min gp2 gp3 gp4
17.39 23.19 28.99 44.93
0.74 1.12 3.35 39.78
12.63 13.16 13.68 15.26
72.76 73.92 75.42 94.35
77.09 84.14 74.89 89.87
73.24 75.72 77.28 92.3
78.63 84.35 64.89 89.31
65.59 65.95 66.49 92.43
76.79 83.93 75.89 89.73
57.78 57.78 2.22 71.11
99.9 99.1 100 100
100 100 40.963855 100
预期输出
gp1_min gp2 gp3 gp4 bin_gp1 bin_gp2 bin_gp3 bin_gp4
17.39 23.19 28.99 44.93 2 2 2 3
0.74 1.12 3.35 39.78 1 1 1 3
12.63 13.16 13.68 15.26 1 2 2 2
72.76 73.92 75.42 94.35 5 6 6 7
77.09 84.14 74.89 89.87 6 7 6 7
73.24 75.72 77.28 92.3 6 6 6 7
78.63 84.35 64.89 89.31 6 7 5 7
65.59 65.95 66.49 92.43 5 6 5 7
76.79 83.93 75.89 89.73 6 7 6 7
57.78 57.78 2.22 71.11 4 4 1 6
99.9 99.1 100 100 8 8 8 8
100 100 40.96 100 8 8 3 8
【问题讨论】:
-
你能举一个内联或可运行代码的小例子吗?
-
我已附上,请参阅示例数据框的屏幕截图和预期输出。
-
请不要发代码、数据、错误信息等文字图片,一律直接在SO上发文字。你认为其他人想从图片中输入这个吗?
标签: python pandas dataframe data-science data-cleaning