1 回答

TA貢獻1784條經驗 獲得超9個贊
通過比較列Series.eq的==,并使用GroupBy.transform與GroupBy.all用于檢查是否所有值都True按組S,然后比較Customer通過Series.duplicated與keep=False退貨所有受騙者。最后按位AND( &)鏈接在一起,并通過numpy.where以下方式設置值:
m1 = df['Status'].eq('canceled').groupby(df['Customer']).transform('all')
m2 = df['Customer'].duplicated(keep=False)
df['new_status'] = np.where(m1 & m2, 'cancelled', '')
print (df)
Customer Status new_status duplicated
0 X canceled 0
1 X canceled 1
2 X active 2
3 Y canceled 0
4 A canceled cancelled 0
5 A canceled cancelled 1
6 B active 0
7 B canceled 1
添加回答
舉報