加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – Pandas替换特定列上的值

发布时间:2020-12-20 12:09:51 所属栏目:Python 来源:网络整理
导读:我知道这两个类似的问题: Pandas replace values Pandas: Replacing column values in dataframe 我使用了一种不同的方法来替换值,我认为它应该是最干净的值.但它不起作用.我知道如何解决它,但我想理解为什么它不起作用: In [108]: df=pd.DataFrame([[1,2,
我知道这两个类似的问题:

Pandas replace values

Pandas: Replacing column values in dataframe

我使用了一种不同的方法来替换值,我认为它应该是最干净的值.但它不起作用.我知道如何解决它,但我想理解为什么它不起作用:

In [108]: df=pd.DataFrame([[1,2,8],[3,4,[5,1,8]],columns=['A','B','C']) 

In [109]: df
Out[109]: 
   A  B  C
0  1  2  8
1  3  4  8
2  5  1  8

In [110]: df.loc[:,['A','B']].replace([1,3,2],6,7],inplace=True)

In [111]: df
Out[111]: 
   A  B  C
0  1  2  8
1  3  4  8
2  5  1  8

In [112]: df.loc[:,'A'].replace([1,inplace=True)

In [113]: df
Out[113]: 
   A  B  C
0  3  2  8
1  6  4  8
2  5  1  8

如果我只在[112]中切割一列,则在[110]中切割多个列的工作方式不同.据我了解.loc方法,它返回一个视图而不是一个副本.在我的逻辑中,这意味着在切片上进行原位更改应该更改整个DataFrame.这就是在[110]行中发生的事情.

解决方法

以下是其中一位开发人员的回答: https://github.com/pydata/pandas/issues/11984

这应该理想地显示一个SettingWithCopyWarning,但我认为这很难检测.

你永远不应该做这种类型的链式就地设置.这简直是??不好的做法.

惯用的是:

In [7]: df[['A','B']] = df[['A',7])

In [8]: df
Out[8]: 
   A  B  C
0  3  7  8
1  6  4  8
2  5  3  8

(你可以使用df.loc [:,[‘A’,’B’]],但如上所述更清楚.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读