Я работаю над набором данных с пропущенными значениями.Заголовок набора данных выглядит следующим образом:
+1 1:0.2 2:0.7 3:-1.2 4:0.5
-1 1:0.9 3:0.1 4:0.8
-1 1:-0.1 2:0.1 4:1.0
+1 2:0.6 3:-1.0
Первый столбец - это метка данных, а число перед двоеточием - индекс объекта.Некоторые функции отсутствуют в некоторых строках.Поэтому, когда я импортирую данные, используя следующий код,
df = pandas.read_csv('dataset',header=None,sep = '\s+|:',engine='python',dtype=float)
, я получаю кадр данных, похожий на
0 1 2 3 4 5 6 7 8
0 1.0 1.0 0.2 2.0 0.7 3.0 -1.2 4.0 0.5
1 -1.0 1.0 0.9 3.0 0.1 4.0 0.8 NaN NaN
2 -1.0 1.0 -0.1 2.0 0.1 4.0 1.0 NaN NaN
3 1.0 2.0 0.6 3.0 -1.0 NaN NaN NaN NaN
. Я хочу заменить NaN на 0 в правильном месте.Но если я использую df.fillna(0)
, я заменю NaN в конце каждой строки, которая выглядит как
0 1 2 3 4 5 6 7 8
0 1.0 1.0 0.2 2.0 0.7 3.0 -1.2 4.0 0.5
1 -1.0 1.0 0.9 3.0 0.1 4.0 0.8 0.0 0.0
2 -1.0 1.0 -0.1 2.0 0.1 4.0 1.0 0.0 0.0
3 1.0 2.0 0.6 3.0 -1.0 0.0 0.0 0.0 0.0
Что мне действительно нужно, так это то, что фрейм данных выглядит следующим образом,
0 1 2 3 4 5 6 7 8
0 1.0 1.0 0.2 2.0 0.7 3.0 -1.2 4.0 0.5
1 -1.0 1.0 0.9 0.0 0.0 3.0 0.1 4.0 0.8
2 -1.0 1.0 -0.1 2.0 0.1 0.0 0.0 4.0 1.0
3 1.0 0.0 0.0 2.0 0.6 3.0 -1.0 0.0 0.0
Так что после того, как я опустил индекс, у меня должно было быть
0 1 2 3 4
0 1.0 0.2 0.7 -1.2 0.5
1 -1.0 0.9 0.0 0.1 0.8
2 -1.0 -0.1 0.1 0.0 1.0
3 1.0 0.0 0.6 -1.0 0.0