Pandas датафрейм ilo c с отрицанием - PullRequest
1 голос
/ 24 февраля 2020

Я хочу установить для значений строк, соответствующих столбцу, заданное значение c. Я знаю только индексы строк, которые мне не следует устанавливать на это значение. Есть ли встроенный трюк, чтобы сделать это с ilo c?

, есть ли что-то вроде

df['I'].iloc[~rids] = 0

Конечно, один из способов сделать это использовать что-то вроде

set(range(len(df))).difference(rids)

Но это выглядит не очень красиво. Любое предложение?

1 Ответ

3 голосов
/ 24 февраля 2020

Используйте DataFrame.loc с Index.difference индексированных значений реального индекса и Index.difference:

df = pd.DataFrame({'I' : ['A','B','C','D']}, index=list('abcd'))

indices = [0,3,1]

df.loc[df.index.difference(df.index[indices]), 'I'] = 0

или с Index.isin:

df.loc[~df.index.isin(df.index[indices]), 'I'] = 0

Возможно решение с позициями и DataFrame.iloc:

df.iloc[np.setdiff1d(np.arange(len(df)), indices), df.columns.get_loc('I')] = 0

print (df)
   I
a  A
b  B
c  0
d  D
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...