我尝试按索引对数据进行排序,结果为None。为什么会这样? 这是我的数据框http://screencast.com/t/zOEuR6Uu 我打电话给:
levelData.sort_index(inplace = True)
无((
levelData.info()
<class 'pandas.core.frame.DataFrame'>
Index: 525 entries, 1 to 99
Data columns (total 2 columns):
win 525 non-null int64
action 525 non-null int64
dtypes: int64(2)
memory usage: 12.3+ KB
答案 0 :(得分:3)
DataFrame.sort_index
跟随Command-Query separation principle,它表示函数应该是命令或查询,而不是两者。
None
。 (在允许它的语言中,命令不应返回任何内容。但由于所有函数都在Python中返回,因此约定是返回None
。) inplace=True
使sort_index
成为命令。该方法修改调用DataFrame并与Command-Query原则保持一致,返回None
。
inplace=False
(默认值)使sort_index
成为查询。
因此,如果您希望sort_index
返回DataFrame,请删除inplace=True
。
真正"inplace" operations list.sort
使用辅助数据结构修改原始数据而不使用。从这个意义上说,没有Pandas操作真正到位。当使用inplace=True
时,首先在辅助数据结构(例如另一个DataFrame)中计算结果,然后将基础数据复制到原始DataFrame的shell中。所以
df.sort_level(inplace=True)
相当于
df = df.sort_level()
inplace=True
的存在主要是因为历史的惯性。
Pandas的首席开发人员Jeff Reback says:
我个人意见:我从不使用就地操作。语法难以阅读,它没有任何优势。