панды обновляют определенную строку со значениями nan

Я просматривал, но я не могу найти ответ на мой конкретный вопрос.

У меня есть Dataframe с сотнями столбцов и сотнями строк. Я хочу изменить встречающиеся значения NaN только для первой строки и заменить их пустой строкой. На это был дан ответ для изменения столбца или всего фрейма данных, но не конкретной строки. Я также не хочу изменять NaN, встречающиеся в других строках.

Я пробовал следующее:

dataframe.loc[0].replace(np.nan, '', regex=True)

и я также пробовал с:

dataframe.update(dataframe.loc[0].fillna(''))

но когда я вызываю кадр данных, он не изменяется. Любая помощь будет принята с благодарностью!


person Paulina    schedule 28.02.2018    source источник


Ответы (1)


Рассмотрим фрейм данных df

np.random.seed([3, 1415])

df = pd.DataFrame(
    np.random.choice([1, np.nan], size=(4, 4)),
    list('WXYZ'), list('ABCD')
)

df

     A    B    C    D
W  1.0  NaN  1.0  NaN
X  1.0  1.0  NaN  1.0
Y  NaN  NaN  NaN  NaN
Z  1.0  NaN  NaN  1.0

Если мы используем нескалярную, а именно массивную вещь для выбора первой строки, мы получим объект pd.DataFrame обратно и сможем удобно fillna перейти к pd.DataFrame.update

df.update(df.iloc[[0]].fillna(''))
df

     A    B    C    D
W  1.0       1.0     
X  1.0    1  NaN    1
Y  NaN  NaN  NaN  NaN
Z  1.0  NaN  NaN    1

Обратите внимание, что я использую [0] вместо 0 в iloc.

person piRSquared    schedule 28.02.2018
comment
Большое спасибо!!! Это работает отлично. Почему смена loc на iloc будет работать? мое имя индекса также равно 0, поэтому я думал, что использование loc[0] было таким же, как iloc[0] - person Paulina; 01.03.2018
comment
iloc[0] говорит взять первую строку по позиции. loc[0] говорит, что нужно взять строку с меткой 0, которая может быть или не быть первой строкой. - person piRSquared; 01.03.2018