Это проблема близости SKU.У меня есть такой кадр данных.Каждый ctn_id имеет несколько кодов sku_.
dfr = pd.DataFrame(columns=['ctn_id','sku_code'])
dfr['ctn_id'] = np.random.randint(low=1,high=21,size=200)
dfr['sku_code'] = np.random.choice(['a','b','c','d'],size=200)
dfr.drop_duplicates(['ctn_id','sku_code'], inplace=True)
Я хочу заполнить следующий фрейм данных.
dfx = pd.DataFrame(columns=['sku_code','a','b','c','d'])
dfx['sku_code'] = ['a','b','c','d']
dfx = dfx.fillna(0)
dfx.set_index('sku_code',inplace=True)
с использованием приведенной ниже логики
for idx in dfr['ctn_id'].unique():
x = list(dfr[dfr['ctn_id'] == idx]['sku_code'].unique())
for skui in dfx.index:
if skui in x:
for skuj in x:
dfx.loc[skui, skuj] = dfx.loc[skui, skuj] + 1
У меня есть 2,5M ctn_ids и 400 sk_codes, что составляет в общей сложности миллиард операций присваивания.Есть ли лучший способ сделать это, используя панд или любой другой пакет?