DataFrame的subset要改变只能赋值这一条路吗?

fillna()的inplace=True参数只有在Series和DataFrame中起作用。

但是通过loc,iloc和【】选出来的subset只是一个新的DataFrame,改变它不会改变原DataFrame,除非这个subset是一个Series,那么Series.fillna(0,inplace=True),那么就会立竿见影的改变原来的DataFrame里同样位置的数据。

如果你想的通过loc,iloc和【】选出来的subset来改变原DataFrame,似乎只剩一种办法。就是赋值法如:

fd=pd.DataFrame(。。。。。)

fd1=fd.loc[[a,b],:]

fd1.fillna(0,inplace=True)
fd.loc[[a,b],:]=fd1

目前似乎也只有通过先改变f1这个subset,再赋值给他的原DataFrame,来改变DataFrame,不知道有没有其他好办法,不用这么倒腾。

目前我认为之所以可以通过Series的fillna(0,inplace=True)来改变原函数,而subset却只能改变subset它自己的原因是,Series用的是原DataFrame的地址,所以原DataFrame会随Series的变化而变化。

但是原DataFrame通过方法筛选出来的subset,它自身就是一个DataFrame类型,就算数据一样,也只能是另一个不同地址的DataFrame(也可以认为是一个新的DataFrame,完全和原DataFrame没有任何关系),所以想改变原DataFrame,就只能通过赋值法了

打个不恰当的比方,可以用二维的list来类比

a=[[1,2],[3,4]]

改变a[0]的值a就会跟

a[0]=100

a就变成了[[100,2],[3,4]]

但是b=[ [ a[1][1],a[0][0] ],[ a[0][1],a[1][0] ] ]

这个b不管怎么变都不会影响a,想要反过来影响a只有赋值法了

我觉得这个理解肯定哪里出错了,如果有高手发现请斧正!!!

Original: https://blog.csdn.net/weixin_57272288/article/details/121993978
Author: weixin_57272288
Title: DataFrame的subset要改变只能赋值这一条路吗?

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/678705/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球