熊猫中的就地排序值到底是什么意思?

新手上路,请多包涵

也许是一个非常幼稚的问题,但我被困在这个问题上: pandas.Series 有一个方法 sort_values 并且有一个选项可以“就地”进行或不进行。我用谷歌搜索了一段时间,但我不是很清楚。似乎这件事被认为是除了我以外的所有人都知道的。谁能给我一些说明性的解释,这两个选项对于傻瓜来说有何不同……?

感谢您的帮助。

原文由 Karel Macek 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 407
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)

原文由 Alexey Smirnov 发布,翻译遵循 CC BY-SA 3.0 许可协议

正如您从 sort_values 文档 中所读到的,该函数的返回值是一个系列。但是,这是一个新系列而不是原始系列。

例如:

 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

所以 ss_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

它表明它们是同一系列,并且不会返回新系列。

原文由 SSC 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题