【发布时间】:2017-10-16 17:33:20
【问题描述】:
我有一个看起来像这样的熊猫数据框:
value
Id
2014-03-13 1 -3
2 -6
3 -3.2
4 -3.1
5 -5
2014-03-14 1 -3.4
2 -6.2
3 -3.2
4 -3.2
5 -5.9
这基本上是一个具有两级多索引的 groupby 对象。
我想根据value 列按升序对其进行排序,但保持级别 0(日期)不变,这样结果应该如下所示:
value
Id
2014-03-13 2 -6
5 -5
3 -3.2
4 -3.1
1 -3
2014-03-14 2 -6.2
5 -5.9
1 -3.4
3 -3.2
4 -3.2
这里是生成初始数据的代码:
import pandas as pd
dates = [pd.to_datetime('2014-03-13', format='%Y-%m-%d'), pd.to_datetime('2014-03-13', format='%Y-%m-%d'), pd.to_datetime('2014-03-13', format='%Y-%m-%d'), pd.to_datetime('2014-03-13', format='%Y-%m-%d'),
pd.to_datetime('2014-03-13', format='%Y-%m-%d'),pd.to_datetime('2014-03-14', format='%Y-%m-%d'), pd.to_datetime('2014-03-14', format='%Y-%m-%d'), pd.to_datetime('2014-03-14', format='%Y-%m-%d'),
pd.to_datetime('2014-03-14', format='%Y-%m-%d'), pd.to_datetime('2014-03-14', format='%Y-%m-%d')]
values = [-3,-6,-3.2,-3.1,-5,-3.4,-6.2,-3.2,-3.2,-5.9]
Ids = [1,2,3,4,5,1,2,3,4,5]
df = pd.DataFrame({'Id': pd.Series(Ids, index=dates),
'value': pd.Series(values, index=dates)})
df = df.groupby([df.index,'Id']).sum()
【问题讨论】:
标签: python sorting pandas dataframe multi-index