Панды сокращают результаты в значениях Nan - PullRequest
0 голосов
/ 11 мая 2019

У меня есть следующий столбец со многими пропущенными значениями '?'в store_data dataframe

>>>store_data['trestbps']
0      140
1      130
2      132
3      142
4      110
5      120
6      150
7      180
8      120
9      160
10     126
11     140
12     110
13       ?

Я заменил все пропущенные значения на -999

store_data.replace('?', -999, inplace = True)

>>>store_data['trestbps']
0       140
1       130
2       132
3       142
4       110
5       120
6       150
7       180
8       120
9       160
10      126
11      140
12      110
13     -999

Теперь я хочу добавить значения в бин, я использовал этот код, но вывод выглядит как Nan:

trestbps = store_data['trestbps']
trestbps_bins = [-999,120,140,200]
store_data['trestbps'] = pd.cut(trestbps,trestbps_bins)
>>>store_data['trestbps']
0      NaN
1      NaN
2      NaN
3      NaN
4      NaN
5      NaN
6      NaN
7      NaN
8      NaN
9      NaN
10     NaN
11     NaN
12     NaN
13     NaN

Категории работают нормально, если отсутствуют пропущенные значения.Я хочу, чтобы мой вывод был классифицирован с (0-12), и только 13 заменяется на -999.Как мне этого добиться?

1 Ответ

1 голос
/ 11 мая 2019

IIUC, вы можете сделать:

bins=[0,120,140,200] #set bins
df.trestbps=pd.cut(df.trestbps,bins) #do the cut
df.trestbps=df.trestbps.values.add_categories(999) #add category as 999
df.trestbps.fillna(999) #fillna with 999

0     (120, 140]
1     (120, 140]
2     (120, 140]
3     (140, 200]
4       (0, 120]
5       (0, 120]
6     (140, 200]
7     (140, 200]
8       (0, 120]
9     (140, 200]
10    (120, 140]
11    (120, 140]
12      (0, 120]
13           999
...