Если вы хотите обрабатывать каждый столбец отдельно, используйте DataFrame.apply
:
df = pd.DataFrame(np.random.randint(0,20,size=(5, 4)), columns=list('ABCD'))
newDF = df.apply(lambda x: pd.cut(x, 2, precision=0))
print (newDF)
A B C D
0 (2.0, 4.0] (8.0, 15.0] (7.0, 13.0] (12.0, 18.0]
1 (2.0, 4.0] (8.0, 15.0] (7.0, 13.0] (12.0, 18.0]
2 (4.0, 7.0] (8.0, 15.0] (13.0, 19.0] (12.0, 18.0]
3 (4.0, 7.0] (8.0, 15.0] (7.0, 13.0] (5.0, 12.0]
4 (4.0, 7.0] (1.0, 8.0] (7.0, 13.0] (5.0, 12.0]
Если хотите обрабатывать все столбцы одинаковыми ячейками, используйте DataFrame.stack
для MultiIndex Series
, примените cut
и измените форму на Series.unstack
:
newDF = pd.cut(df.stack(), 2, precision=0).unstack()
print (newDF)
A B C D
0 (10.0, 19.0] (10.0, 19.0] (10.0, 19.0] (-0.0, 10.0]
1 (10.0, 19.0] (10.0, 19.0] (-0.0, 10.0] (-0.0, 10.0]
2 (-0.0, 10.0] (10.0, 19.0] (-0.0, 10.0] (-0.0, 10.0]
3 (-0.0, 10.0] (-0.0, 10.0] (10.0, 19.0] (-0.0, 10.0]
4 (10.0, 19.0] (10.0, 19.0] (-0.0, 10.0] (-0.0, 10.0]