python – Pandas替换特定列上的值

python – Pandas替换特定列上的值,第1张

概述我知道这两个类似的问题: Pandas replace values Pandas: Replacing column values in dataframe 我使用了一种不同的方法来替换值,我认为它应该是最干净的值.但它不起作用.我知道如何解决它,但我想理解为什么它不起作用: In [108]: df=pd.DataFrame([[1, 2, 8],[3, 4, 8], [5, 1, 8]], 我知道这两个类似的问题:

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]: dfOut[109]:    A  B  C0  1  2  81  3  4  82  5  1  8In [110]: df.loc[:,['A','B']].replace([1,3,2],6,7],inplace=True)In [111]: dfOut[111]:    A  B  C0  1  2  81  3  4  82  5  1  8In [112]: df.loc[:,'A'].replace([1,inplace=True)In [113]: dfOut[113]:    A  B  C0  3  2  81  6  4  82  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]: dfOut[8]:    A  B  C0  3  7  81  6  4  82  5  3  8

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

总结

以上是内存溢出为你收集整理的python – Pandas替换特定列上的值全部内容,希望文章能够帮你解决python – Pandas替换特定列上的值所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1194239.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-03
下一篇2022-06-03

发表评论

登录后才能评论

评论列表(0条)

    保存