第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 pandas/python 基于優(yōu)先級的分類

使用 pandas/python 基于優(yōu)先級的分類

翻翻過去那場雪 2023-08-08 10:25:19
我在下面的數(shù)據(jù)框和代碼列表中包含發(fā)票相關(guān)數(shù)據(jù)df = pd.DataFrame({    'invoice':[1,1,2,2,2,3,3,3,4,4,4,5,5,6,6,6,7],    'code':[101,104,105,101,106,106,104,101,104,105,111,109,111,110,101,114,112],    'qty':[2,1,1,3,2,4,7,1,1,1,1,4,2,1,2,2,1]})+---------+------+-----+| invoice | code | qty |+---------+------+-----+|    1    |  101 |  2  |+---------+------+-----+|    1    |  104 |  1  |+---------+------+-----+|    2    |  105 |  1  |+---------+------+-----+|    2    |  101 |  3  |+---------+------+-----+|    2    |  106 |  2  |+---------+------+-----+|    3    |  106 |  4  |+---------+------+-----+|    3    |  104 |  7  |+---------+------+-----+|    3    |  101 |  1  |+---------+------+-----+|    4    |  104 |  1  |+---------+------+-----+|    4    |  105 |  1  |+---------+------+-----+|    4    |  111 |  1  |+---------+------+-----+|    5    |  109 |  4  |+---------+------+-----+|    5    |  111 |  2  |+---------+------+-----+|    6    |  110 |  1  |+---------+------+-----+|    6    |  101 |  2  |+---------+------+-----+|    6    |  114 |  2  |+---------+------+-----+|    7    |  104 |  2  |+---------+------+-----+代碼列表是,Soda =  [101,102]Hot =  [103,109]Juice =  [104,105]Milk =  [106,107,108]Dessert =  [110,111]category我的任務(wù)是根據(jù)下面指定的添加一個新列Order of Priority。優(yōu)先級第一:如果任何發(fā)票的數(shù)量超過 10 個,則應(yīng)分類為Mega。例如:qty總和invoice 3 is 12優(yōu)先事項 2:來自rest of the invoice. 如果列表中有任何code一個,則類別應(yīng)該是。例如: 在是 在 中。因此,完整發(fā)票被分類為。無論發(fā)票中是否存在其他項目 ( )。由于優(yōu)先級適用于發(fā)票。invoiceMilkHealthyinvoice 2 code 106MilkHealthycode 101 & 105full優(yōu)先級No.3:從 中rest of the invoice,如果其中任何一個code在invoice列表中Juice,那么這有2 parts(3.1) 如果該果汁數(shù)量的總和為equal to 1,則類別應(yīng)為OneJuice。例如:invoice 1具有code 104和qty 1.thisinvoice 1將得到,OneJuice無論code 101發(fā)票中是否存在其他項目 ( )。由于優(yōu)先級適用于full發(fā)票。(3.2) 如果該果汁數(shù)量的總和為greater than 1,則類別應(yīng)為ManyJuice。例如:invoice 4有code 104 & 105 和qty 1 + 1 = 2。優(yōu)先級4:從 中rest of the invoice,如果任何code發(fā)票在Hot列表中,則應(yīng)將其分類為HotLovers。無論發(fā)票中是否包含其他項目。優(yōu)先級No.5:從 中rest of the invoice,如果任何code發(fā)票在Dessert列表中,則應(yīng)將其分類為DessertLovers。最后,其余所有發(fā)票應(yīng)歸類為Others。
查看完整描述

1 回答

?
天涯盡頭無女友

TA貢獻1831條經(jīng)驗 獲得超9個贊

您可以嘗試使用np.select

df['category'] = np.select([

? ? df.groupby('invoice')['qty'].transform('sum') >= 10,

? ? df['code'].isin(Milk).groupby(df.invoice).transform('any'),

? ? (df['qty']*df['code'].isin(Juice)).groupby(df.invoice).transform('sum') == 1,

? ? (df['qty']*df['code'].isin(Juice)).groupby(df.invoice).transform('sum') > 1,

? ? df['code'].isin(Hot).groupby(df.invoice).transform('any'),

? ? df['code'].isin(Dessert).groupby(df.invoice).transform('any')

],

? ? ['Mega','Healthy','OneJuice','ManyJuice','HotLovers','DessertLovers'],

? ? 'Other'

)

print(df)

輸出


? ? invoice? code? qty? ? ? ?category

0? ? ? ? ?1? ?101? ? 2? ? ? ?OneJuice

1? ? ? ? ?1? ?104? ? 1? ? ? ?OneJuice

2? ? ? ? ?2? ?105? ? 1? ? ? ? Healthy

3? ? ? ? ?2? ?101? ? 3? ? ? ? Healthy

4? ? ? ? ?2? ?106? ? 2? ? ? ? Healthy

5? ? ? ? ?3? ?106? ? 4? ? ? ? ? ?Mega

6? ? ? ? ?3? ?104? ? 7? ? ? ? ? ?Mega

7? ? ? ? ?3? ?101? ? 1? ? ? ? ? ?Mega

8? ? ? ? ?4? ?104? ? 1? ? ? ManyJuice

9? ? ? ? ?4? ?105? ? 1? ? ? ManyJuice

10? ? ? ? 4? ?111? ? 1? ? ? ManyJuice

11? ? ? ? 5? ?109? ? 4? ? ? HotLovers

12? ? ? ? 5? ?111? ? 2? ? ? HotLovers

13? ? ? ? 6? ?110? ? 1? DessertLovers

14? ? ? ? 6? ?101? ? 2? DessertLovers

15? ? ? ? 6? ?114? ? 2? DessertLovers

16? ? ? ? 7? ?104? ? 2? ? ? ManyJuice

微基準(zhǔn)測試

pd.show_versions()


commit? ? ? ? ? ?: None

python? ? ? ? ? ?: 3.7.5.final.0

python-bits? ? ? : 64

OS? ? ? ? ? ? ? ?: Linux

OS-release? ? ? ?: 4.4.0-18362-Microsoft

machine? ? ? ? ? : x86_64

processor? ? ? ? : x86_64

byteorder? ? ? ? : little

LC_ALL? ? ? ? ? ?: None

LANG? ? ? ? ? ? ?: C.UTF-8

LOCALE? ? ? ? ? ?: en_US.UTF-8


pandas? ? ? ? ? ?: 0.25.3

numpy? ? ? ? ? ? : 1.17.4

數(shù)據(jù)創(chuàng)建于


def make_data(n):

? ? ?return pd.DataFrame({

? ? 'invoice':np.arange(n)//3,

? ? 'code':np.random.choice(np.arange(101,112),n),

? ? 'qty':np.random.choice(np.arange(1,8), n, p=[10/25,10/25,1/25,1/25,1/25,1/25,1/25])

})

結(jié)果


perfplot.show(

? ? setup=make_data,

? ? kernels=[get_category, get_with_np_select],

? ? n_range=[2**k for k in range(8, 20)],

? ? logx=True,

? ? logy=True,

? ? equality_check=False,

? ? xlabel='len(df)')

https://img1.sycdn.imooc.com/64d1a7c000019f2605380277.jpg

查看完整回答
反對 回復(fù) 2023-08-08
  • 1 回答
  • 0 關(guān)注
  • 168 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號