该问题是楼主使用了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
|