Применить диапазон к ярлыку привязки python

#python #pandas #numpy

#python #pandas #numpy

Вопрос:

У меня есть таблица ячеек. В котором val столбец является значением ячейки, а имя flag столбца DataFrame, которое я хочу применить pd.cut .

таблица ячеек

 import re, io
import pandas as pd
data_str = '''
val    flag
1      a
3      a
5      a
7      a
9      a
250    b
270    b
290    b
320    b
'''.strip()
data_str = re.sub('  ', ',', data_str)
bin_table = pd.read_csv(io.StringIO(data_str), sep=',')
print(bin_table)

       val flag
    0    1    a
    1    3    a
    2    5    a
    3    7    a
    4    9    a
    5  250    b
    6  270    b
    7  290    b
    8  320    b
 

исходный фрейм данных

df = pd.DataFrame(zip([2,4,8],[260,300,301]), columns=['a', 'b'])

    a    b
0  2  260
1  4  300
2  8  301
 

результат, который я хотел:

 a  a_bin      b    b_bin
2  (1 - 3)    260  (250 - 270)
4  (3 - 5)    300  (290 - 310)
8  (7 - 9)    301  (290 - 310)
 

Комментарии:

1. Вопрос звучит не так четко. Например, как обрабатывать a_bin, например (5-7), ожидаемый результат не включал его.

Ответ №1:

Как насчет:

 df.groupby('flag')['val'].value_counts(bins=3)
 

Вывод:

 flag                    
a     (6.333, 9.0]          2
      (0.991, 3.667]        2
      (3.667, 6.333]        1
b     (249.929, 273.333]    2
      (296.667, 320.0]      1
      (273.333, 296.667]    1
Name: val, dtype: int64