Неправильно заполнить пропущенные значения в панде.

python pandas dataframe

65 просмотра

2 ответа

Предположим, что «df» - это объект dataframe, «ca» - одна из переменных.

>>> df.ca.value_counts()
0.0    176
1.0     65
2.0     38
3.0     20
?        4
Name: ca, dtype: int64

Как видите, у меня есть четыре пропущенных значения. Я хочу заполнить их. Используя код ниже:

>>> df.loc[df.ca == '?', 'ca'] = 0.0
0.0    176
1.0     65
2.0     38
3.0     20
0.0      4
Name: ca, dtype: int64

Почему я получил 5 уникальных значений? Я хочу объединить пятый ряд в первый ряд, т.е.

0.0   176 + 4 = 180
1.0     65
2.0     38
3.0     20

Как я могу это исправить?

Автор: vincent Источник Размещён: 08.11.2019 10:58

Ответы (2)


0 плюса

Решение

Потому что '?'был один из ваших ценностей, я знаю , что df.caэто либо dtype objectили string. Когда ты у replace('?', 0.)тебя теперь есть и строка '0.0'и плавающий 0.0. После того, как вы конвертируете все в float, у вас не должно возникнуть проблем.

df.ca.replace('?', 0.).astype(float).value_counts()

0.0    180
1.0     65
2.0     38
3.0     20
dtype: int64
Автор: piRSquared Размещён: 20.08.2016 06:55

0 плюса

Следующее в значительной степени работает тоже:

In [193]: df = pd.DataFrame({'ca': [0.0]*176 + [1.0]*65 + [2.0]*38 + [3.0]*20 + ['?']*4})

In [194]: df.ca.value_counts()
Out[194]: 
0.0    176
1.0     65
2.0     38
3.0     20
?        4
Name: ca, dtype: int64

In [195]: df.loc[df.ca == '?', 'ca'] = 0.0

In [196]: df.ca.value_counts()
Out[196]: 
0.0    180
1.0     65
2.0     38
3.0     20
Name: ca, dtype: int64
Автор: Nehal J Wani Размещён: 20.08.2016 06:57
Вопросы из категории :
32x32