这是我的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
现在,根据索引值替换值:
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
是否可以基于位置而不是索引值执行相同的操作,类似这样,但是它显示ValueError(ValueError:只能按位置使用[整数,整数切片(起始点为INCLUDED,结束点为EXCLUDED),按位置索引)整数,布尔数组]):
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
解决方法:
您可以使用get_loc获取列的位置并将其传递给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
或反过来:
df.loc[df.index[1], 's'] = 'B'