也许这是一个非常天真的问题,但我坚持这一点:pandas.Series
有一个方法sort_values
,并且有一个选项可以做到这一点"到位"或不。我已经谷歌搜索了一段时间,但我不是很清楚。似乎这个东西被认为是除了我之外所有人都知道的。任何人都可以给我一些说明性的解释,这两个选项如何相互之间的傻瓜......?
感谢您的帮助。
答案 0 :(得分:3)
正如您可以从sort_values document读取的那样,该函数的返回值是一个系列。但是,它是一个新系列而不是原始系列。
例如:
import numpy as np
import pandas as pd
s = pd.Series(np.random.randn(5), index=['a', 'b', 'c', 'd', 'e'])
print(s)
a -0.872271
b 0.294317
c -0.017433
d -1.375316
e 0.993197
dtype: float64
s_sorted = s.sort_values()
print(s_sorted)
d -1.375316
a -0.872271
c -0.017433
b 0.294317
e 0.993197
dtype: float64
print(id(s_sorted))
127952880
print(id(s))
127724792
所以s
和s_sorted
是不同的系列。
但是如果你使用inplace = True。
s.sort_values(inplace=True)
print(s)
d -1.375316
a -0.872271
c -0.017433
b 0.294317
e 0.993197
dtype: float64
print(id(s))
127724792
它显示它们是同一系列,并且不会返回任何新系列。
答案 1 :(得分:2)
这是一个例子。 df1
将保留已排序的数据框,df
将保持不变
import pandas as pd
from datetime import datetime as dt
df = pd.DataFrame(data=[22,22,3],
index=[dt(2016, 11, 10, 0), dt(2016, 11, 10, 13), dt(2016, 11, 13, 5)],
columns=['foo'])
df1 = df.sort_values(by='foo')
print(df, df1)
在下面的情况中,df
将保留已排序的值
import pandas as pd
from datetime import datetime as dt
df = pd.DataFrame(data=[22,22,3],
index=[dt(2016, 11, 10, 0), dt(2016, 11, 10, 13), dt(2016, 11, 13, 5)],
columns=['foo'])
df.sort_values(by='foo', inplace=True)
print(df)
答案 2 :(得分:1)
“ inplace = True”更像是物理排序,而“ inplace = False”更像是逻辑排序。物理排序是指根据某些键对存储在计算机中的数据集进行排序。逻辑排序意味着保存在计算机中的数据集仍以原始方式(输入/导入时)保存,并且排序仅在其索引上起作用。数据集具有一个或多个逻辑索引,但是物理索引是唯一的。