Вот мой ДФ:Python панд: заменяющие значения на основе местоположения не значение индекса
In[12]: df = pd.DataFrame(data = list("aabbcc"), columns = ["s"], index=range(11,17))
In[13]: df
Out[13]:
s
11 a
12 a
13 b
14 b
15 c
16 c
Теперь, заменив значения на основе значений индекса:
In[14]: df.loc[11, "s"] = 'A'
In[15]: df
Out[15]:
s
11 A
12 a
13 b
14 b
15 c
16 c
In[16]: df.ix[12, "s"] = 'B'
In[17]: df
Out[17]:
s
11 A
12 B
13 b
14 b
15 c
16 c
Можно ли сделать то же самое Based на позиции не значение индекса, что-то вроде этого, но он показывает ValueError (ValueError: Can only index by location with a [integer, integer slice (START point is INCLUDED, END point is EXCLUDED), listlike of integers, boolean array]
):
In[18]: df.iloc[1, "s"] = 'b'
И, если я пытаюсь что-то вроде этого:
df.s.iloc[1] = "b"
Я получаю это предупреждение:
SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame
Диафрагменное Первая ошибка, которую вы получаете, заключается в том, что вы пытаетесь использовать индексирование на основе целых чисел со строкой. try 'df.iloc [1, 0] = 'b''. Это полный код, который вы используете? 'df.s.iloc [1] =" b "' не вызывает ошибку при запуске. Я ожидал бы увидеть предупреждение, которое вы получаете, если 'df' был создан путем разрезания другого фрейма данных. – johnchase
@johnchase: Отличное объяснение, спасибо :) – ramesh