Возможно является то, что вы ищете. Короткий ответ:
df['quantized'] = pd.qcut(df['col4'], 5, labels=False)
Longer объяснение:
>>> import pandas as pd
>>> import numpy as np
>>> df = pd.DataFrame(np.random.randn(10, 5), columns=['col1','col2','col3','col4','col5'])
>>> df
col1 col2 col3 col4 col5
0 0.502017 0.290167 0.483311 1.755979 -0.866204
1 0.374881 -1.372040 -0.533093 1.559528 -1.835466
2 -0.110025 -1.071334 -0.474367 -0.250456 0.428927
3 -2.070885 0.095878 -3.133244 -1.295787 0.436325
4 -0.974993 0.591984 -0.839131 -0.949721 -1.130265
5 -0.383469 0.453937 -0.266297 -1.077004 0.123262
6 -2.548547 0.424707 -0.955433 1.147909 -0.249138
7 1.056661 0.949915 -0.234331 -0.146116 0.552332
8 0.029098 -1.016712 -1.252748 -0.216355 0.458309
9 0.262807 0.029040 -0.843372 0.492120 0.128395
Вы можете использовать pd.qcut()
, чтобы получить соответствующий диапазон.
>>> q = pd.qcut(df['col4'], 5)
>>> q
0 (1.23, 1.756]
1 (1.23, 1.756]
2 (-0.975, -0.23]
3 [-1.296, -0.975]
4 (-0.975, -0.23]
5 [-1.296, -0.975]
6 (0.109, 1.23]
7 (-0.23, 0.109]
8 (-0.23, 0.109]
9 (0.109, 1.23]
Name: col4, dtype: category
Categories (5, object): [[-1.296, -0.975] < (-0.975, -0.23] < (-0.23, 0.109] < (0.109, 1.23] < (1.23, 1.756]]
Вы можете установить параметр labels=False
, чтобы получить целое число Представительские
>>> q = pd.qcut(df['col4'], 5, labels=False)
>>> q
0 4
1 4
2 1
3 0
4 1
5 0
6 3
7 2
8 2
9 3
dtype: int64
также, это то, что вы имели в виду, чтобы написать: '' 'а = pd.DataFrame (pd.np.random.random ((5, 5)), столбцы = [ 'col1', 'col2 ',' col3 ',' col4 ',' col5 ']) '' '?? – dermen