【发布时间】:2017-04-08 05:13:46
【问题描述】:
【问题讨论】:
标签: python pandas jupyter-notebook
【问题讨论】:
标签: python pandas jupyter-notebook
使用sort_values 并指定列:
df = df.sort_values(['A','B'])
df = pd.DataFrame({'A':[1,1,1,2,2,2,3,3,3],
'B':[3,2,1,1,3,2,3,2,1]})
df = df.sort_values(['A','B'])
#alternatively
#df.sort_values(['A','B'], inplace=True)
print (df)
A B
2 1 1
1 1 2
0 1 3
3 2 1
5 2 2
4 2 3
8 3 1
7 3 2
6 3 3
df = df.sort_values(['A','B']).reset_index(drop=True)
print (df)
A B
0 1 1
1 1 2
2 1 3
3 2 1
4 2 2
5 2 3
6 3 1
7 3 2
8 3 3
【讨论】:
pandas 版本的后备方案吗?
pandas,版本0.15.2,没有sort_values() 方法。 documentation 声称它是“0.17.0 版中的新功能”,这显然是不正确的。
这会单独留下'A',并在组内进行排序。
请注意,索引保持原样。
df.assign(B=df.groupby('A').transform(lambda x: x.sort_values()))
A B
0 1 1
1 1 2
2 1 3
3 2 1
4 2 2
5 2 3
6 3 1
7 3 2
8 3 3
请参阅This Question 和相关答案。归功于 @root 如果这个答案对人们有帮助,请点击链接并在那里投票支持 root 的答案。谢谢。
【讨论】:
我有熊猫版本0.15.2,它没有DataFrame.sort_values() 方法。所以这是一个对两列进行排序和替换的后备:
df.loc[:,["A", "B"]] = sorted(zip(df.A, df.B))
【讨论】:
df = df.sort(columns=['A','B']) 是如何工作的?
0.17.0 中重命名为check。
[2, 1, 0, 3, 5, ...]