微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python Pandas:根据位置而非索引值替换值

这是我的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'

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐