我在pandas中有以下groupby数据框
Crop Region
maize_1 Temperate 30.0
Tropical 46.0
maize_2 Tropical 77.5
Temperate 13.5
soybean_1 Temperate 18.5
Tropical 35.0
如何对其进行排序,以便在“地区”中进行排序。专栏,温带先于热带?
- 编辑:预期答案是
Crop Region
maize_1 Temperate 30.0
Tropical 46.0
maize_2 Temperate 13.5
Tropical 77.5
soybean_1 Temperate 18.5
Tropical 35.0
答案 0 :(得分:2)
idx = pd.MultiIndex.from_tuples([('maize_1', 'Temperate'), ('maize_1', 'Tropical'),
('maize_2', 'Tropical'), ('maize_2', 'Temperate'),
('soybean_1', 'Temperate'), ('soybean_1', 'Tropical')],
names=['Crop', 'Region'])
s = pd.Series([30., 46., 77.5, 13.5, 18.5, 34.], idx)
s
Crop Region
maize_1 Temperate 30.0
Tropical 46.0
maize_2 Tropical 77.5
Temperate 13.5
soybean_1 Temperate 18.5
Tropical 34.0
dtype: float64
您希望按'Region'
排序的IIUC并单独留下'Crop'
。
s.unstack().sort_index(1).stack()
Crop Region
maize_1 Temperate 30.0
Tropical 46.0
maize_2 Temperate 13.5
Tropical 77.5
soybean_1 Temperate 18.5
Tropical 34.0
dtype: float64
您也可以按原样对索引进行排序,但也会对'Crop'
进行排序。你的'Crop'
已经完成了。但如果他们不这样做,这个解决方案就会保留下来。
答案 1 :(得分:0)