我正在尝试删除产品编号的所有重复项,并根据预定义的层次结构仅保留最高的记录,其值在单独的列中。
层次结构如下所示:
A1
A2
A3
A4
A5
下面是整个DataFrame df
的摘要。
product_num price_category
101 A1
101 A3
202 A2
202 A4
302 A2
302 A5
303 A5
303 A1
304 A4
304 A3
我希望达到的期望输出如下所示。
product_num price_category
101 A1
202 A2
302 A2
303 A1
304 A3
答案 0 :(得分:2)
将列price_category
转换为ordered categoricals,因此如果将DataFrame.sort_values
与DataFrame.drop_duplicates
一起使用,则按层次结构删除重复项:
c = ['A1','A2','A3','A4','A5']
df['price_category'] = pd.Categorical(df['price_category'], ordered=True, categories=c)
df = df.sort_values(['product_num','price_category']).drop_duplicates('product_num')
print (df)
product_num price_category
0 101 A1
2 202 A2
4 302 A2
7 303 A1
9 304 A3
答案 1 :(得分:0)