Назначить целую строку как None: IndexError: индекс кортежа вне диапазона - PullRequest
1 голос
/ 25 февраля 2020

Создайте новый фрейм данных.

df = pd.DataFrame([[1, 2], [4, 6], [7, 8]],
     index=['cobra', 'viper', 'sidewinder'],
     columns=['max_speed', 'shield']) df

Показать его значение:

df
            max_speed  shield
cobra               1       2
viper               4       6
sidewinder          7       8

Теперь я хочу назначить всю первую строку как 10.

df.iloc[0:1,] = 10
df
            max_speed  shield
cobra              10      10
viper               4       6
sidewinder          7       8

Назначить всю первую строку как None.

df.iloc[0:1,] = None
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.5/dist-packages/pandas/core/indexing.py", line 190, in __setitem__
    self._setitem_with_indexer(indexer, value)
  File "/usr/local/lib/python3.5/dist-packages/pandas/core/indexing.py", line 471, in _setitem_with_indexer
    info_idx = indexer[info_axis]
IndexError: tuple index out of range

Почему нельзя назначить всю строку как None только одним выражением?

df.iloc[0,0] = None
df.iloc[0,1] = None

Два оператора могут назначить строку как None, почему нельзя написать только одно выражение, например df.iloc[0:1,] = 10?

1 Ответ

1 голос
/ 25 февраля 2020

Возможное решение - добавить : для выбора всех столбцов:

df.iloc[0:1,:] = None
print (df)
            max_speed  shield
cobra             NaN     NaN
viper             4.0     6.0
sidewinder        7.0     8.0

Или также пропустить ,:

df.iloc[0:1] = None
print (df)
            max_speed  shield
cobra             NaN     NaN
viper             4.0     6.0
sidewinder        7.0     8.0

Но, на мой взгляд, причина, по которой df.iloc[0:1, ] = None не удалась должно быть ошибка.

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