擅长:python、mysql、java
<p>从所有可能索引的多索引创建数据帧</p>
<pre><code>ind = pd.MultiIndex.from_product(
[['p1', 'p2'], ['SKU1', 'SKU2' ,'SKU3']]
).to_frame().reset_index(drop=True).rename({0:'proid', 1: 'sku'}, axis=1)
</code></pre>
<p>左连接到原始数据帧</p>
<pre><code>ind.merge(df, on=['proid', 'sku'], how='left').fillna(0)
</code></pre>
<p>输出:</p>
<pre><code> proid sku qty
0 p1 SKU1 1.0
1 p1 SKU2 0.0
2 p1 SKU3 2.0
3 p2 SKU1 3.0
4 p2 SKU2 0.0
5 p2 SKU3 0.0
</code></pre>
<p>或者,创建多索引;重新索引原始数据帧,用0填充空值</p>
<pre><code>ind2 = pd.MultiIndex.from_product(names=['proid', 'sku'],
iterables=[['p1', 'p2'], ['SKU1', 'SKU2' ,'SKU3']])
df.set_index(['proid', 'sku']).reindex(ind2, fill_value=0).reset_index()
</code></pre>