Pandas的values属性排序或修改后会改变原来的DataFrame

Pandas的values属性排序或修改后会改变原来的DataFrame,第1张

该问题是楼主使用了values属性将dataframe格式后导出为array格式后进行了sort(),结果发现原来的dataframe完全被打乱。


举例:
当修改values的值时,dataframe的值也会改变

import pandas as pd
df = pd.DataFrame()
df['a']  = [1,2]
df['b'] = [3,4]
print('原来的dataframe:')
print(df)
test = df['a'].values
test[0] = 8
print("修改values后:")
df

结果:

进行sort后:

test = df['a'].values
test.sort()
print('sort values后')
df


可见使用sort()或赋值修改values都会修改原来的值,但在debug之后,楼主发现sorted并不会修改原来的值(注意sorted是在上面的sort代码上进行):

test = df['a'].values
test = sorted(test,reverse=True)
print('sorted values后')
print('新的test值:')
print(test)
print('原本的dataframe:')
df

故问题解决

个人猜测原因在于values与原始数据绑定在一起,只是以array格式返回了,但sort()方法是直接修改数据本身,所以修改了原本的数据,但sorted()方法是生成了一个新的对象,所以在修改sorted()生成的对象时不会改变原本的Dataframe

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

原文地址: http://outofmemory.cn/langs/570315.html

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

发表评论

登录后才能评论

评论列表(0条)

保存