Панды заполнены только в строках с как минимум 1 значением, отличным от NaN - PullRequest
0 голосов
/ 24 мая 2018

Предположим, у меня есть DataFrame, сконструированный так:

import pandas as pd
import numpy as np

df = pd.DataFrame(data = {"col1":[3, np.nan, np.nan, 21],
                          "col2":[4, np.nan, 12, np.nan],
                          "col3":[33, np.nan, 55, np.nan]})

, который выглядит так:

    col1     col2     col3
0   3.0      4.0      33.0
1   NaN      NaN      NaN
2   NaN      12.0     55.0
3   21.0     NaN      NaN

Я хочу отфильтровать по столбцам , которые имеют по крайней мере 1не-NaN значение , а затем заполнить на месте.

Если я сделаю следующее:

df.loc[df.dropna(thresh=1).index, :].fillna("fill value")

Это создаст новый DataFrame с правильно заполненными значениями и удалит строку, которая все NaN.

НоЯ хочу сохранить всю строку NaN, поэтому пытаюсь применить это на месте:

df.loc[df.dropna(thresh=1).index, :].fillna("fill value", inplace=True)

, но в исходный DataFrame не вносятся изменения - что я делаю неправильно?

1 Ответ

0 голосов
/ 24 мая 2018

Для пояснения, вы хотите, чтобы все строки NaN оставались nans, но заполняете другие NaN значением?А на месте?

Что-то вроде этого должно работать:

df.where(df.isnull().all(axis=1), df.fillna(100), inplace=True)

Где хранятся значения, где вся строка равна нулю, в противном случае заменяет его значением df.fillna ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...