【发布时间】:2018-12-13 06:17:06
【问题描述】:
我有以下熊猫数据框:
id val city
4 78 a
4 12 b
4 50 c
9 20 d
9 8 e
9 30 f
9 17 g
我想把它转换成下面的形状。在每个“id”组中,根据“val”获取最大的行(在本例中为 n=2)。例如78 和 50 组 id 4 和 30 和 20 组 id 9
id val city
4 78 a
4 50 c
9 30 f
9 20 d
最后,如下旋转表格:
id c_1stLrgst c_1Lrgst_val c_2ndLrgst c_2Lrgst_val...c_nLrgst c_nLrgst_val
4 a 78 c 50
9 f 30 d 20
我可以使用df.groupby('id').nlargest(2, 'val') 来获取这些组。不知道下一步该做什么。
import pandas as pd
df_dict = {'id': [4,4,4,9,9,9,9],
'val':[78,12,50,20,8,30,17],
'city':['a', 'b', 'c', 'd', 'e', 'f', 'g'],
};
df = pd.DataFrame(df_dict);
【问题讨论】:
标签: python pandas dataframe pivot-table pandas-groupby