Python pandas: reemplaza los valores basados ​​en la ubicación, no en el valor del índice

Aquí está mi df:

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 

Ahora, reemplazando valores basados ​​en valores de índice:

 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 

Es posible hacer lo mismo en función de la posición, no del índice, algo como esto, pero muestra 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' 

Y, si bash algo como esto:

 df.s.iloc[1] = "b" 

Me sale esta advertencia:

 SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame 

Puede usar get_loc para obtener la ubicación de la columna y pasarla a iloc:

 df.iloc[1, df.columns.get_loc('s')] = 'B' df Out: s 11 a 12 B 13 b 14 b 15 c 16 c 

O al revés:

 df.loc[df.index[1], 's'] = 'B'