1 回答
TA贡献1851条经验 获得超5个赞
我觉得我们可以Categorical做到transform
df['Type']=pd.Categorical(df.ItemCode,['A','B','C'],ordered=True)
df['Type']='Type_'+df.groupby('InvoiceNo')['Type'].transform('min').fillna('other')
更新
df['Type']=pd.Categorical(df.ItemCode,['A','B','C'],ordered=True)
df=df.sort_values('Type')
df['Type']='Type_'+df.groupby('InvoiceNo')['Type'].transform('first').fillna('other')
df=df.sort_index()
df
Out[32]:
InvoiceNo ItemCode Qty Type
0 Inv-001 A 2 Type_A
1 Inv-001 B 3 Type_A
2 Inv-001 C 1 Type_A
3 Inv-002 B 3 Type_B
4 Inv-002 D 4 Type_B
5 Inv-003 C 3 Type_C
6 Inv-003 D 9 Type_C
7 Inv-004 D 5 Type_other
8 Inv-004 E 8 Type_other
9 Inv-005 X 2 Type_other
添加回答
举报