【发布时间】:2020-04-30 16:50:29
【问题描述】:
我正在尝试根据所有列的最小值和最大值对数据进行分类。我面临一个手动执行的问题。我想通过传递我的 CSV 文件数据来自动完成。我的数据的形状是(363667,60)。我正在展示我的数据集的样本。
Sno Col1 col2 col3 col4 col5
1 84.548913 1.972093 53475.298 63982.83 77064.641304
2 72.036364 5.741337 44580.824 49533.727 71510.181818
3 15.820000 1.239958 5562.0950 7355.3950 7283.725000
4 26.465409 2.206942 11060.185 12358.4829 16324.478049
5 239.393443 2.521642 166275.295 214985.754 220683.901639
6 88.474903 1.09879 49609.6409 54794.0424 78830.223938
7 32.766234 1.007994 16966.6147 19215.6753 28802.948052
8 79.096685 7.605093 39728.3121 47221.88950 71375.127072
9 344.000000 5.440523 225168.904 267927.3714 317527.742857
10 22.459016 1.884006 14640.9180 15854.91803 20288.557377
我对每一列都使用以下代码。
df=pd.read_csv("Oversampling-Balanced.csv", low_memory=False, na_values='?')
bins1=[-0.001,228.0,493.051,812.0,1292.0,10368.5]
# # #name of the groups
gr_names1=['Very_Low','Low','Medium','High','Very_High']
df['lx_pmu_p1fwm_engine_speed_torque_h_x_index_1']=pd.cut(df["lx_pmu_p1fwm_engine_speed_torque_h_x_index_1"],bins1,labels=gr_names1)
我想为所有列而不是手动执行此操作。我想通过传递 CSV 文件的数据框来用更少的代码完成这项任务。
期望的输出是:
Sno Col1 col2 col3 col4 col5
1 low low low low low
2 low high very_low very_low low
3 very_low very_low very_low very_low very_low
4 very_low low very_low very_low very_low
5 high low high very_high High
6 low very_low low low low
7 very_low very_low very_low very_low very_low
8 low very_high very_low very_low low
9 very_high high very_high very_high very_high
10 very_low low very_low very_low very_low
【问题讨论】:
-
你可以使用
df.apply -
@DivyanshuSrivastava 但如何同时对所有列执行此操作。我不知道如何为条件最小值和最大值编写代码
-
@Anki 你能显示你的预期输出吗?
-
您是如何手动计算 bin 值的?
-
@ChrisSears 我计算一列的最大值并将其除以我想要制作的箱数。
标签: python pandas continuous bins