我有一个包含多个产品的销售订单的数据框(下面是原始数据框)。我需要创建第二个数据框,显示销售订单,销售订单是否只有一个产品(独立),以及产品名称。任何有关如何实现这一目标的帮助将不胜感激。谢谢帮派!
原始数据帧:
<table><tbody>
<tr><th> </th><th>A</th><th>B</th></tr>
<tr><td>1</td><td>Sales Order</td><td>Product</td></tr>
<tr><td>2</td><td>1111</td><td>Software</td></tr>
<tr><td>3</td><td>1111</td><td>Support</td></tr>
<tr><td>4</td><td>2222</td><td>Hardware</td></tr>
<tr><td>5</td><td>3333</td><td>Software</td></tr>
<tr><td>6</td><td>4444</td><td>Hardware</td></tr>
<tr><td>7</td><td>4444</td><td>Software</td></tr>
</tbody></table>
期望的输出:
<table><tbody>
<tr><th> </th><th>A</th><th>B</th><th>C</th></tr>
<tr><td>1</td><td>Sales Order</td><td>Standalone</td><td>Product (SA)</td></tr>
<tr><td>2</td><td>1111</td><td>No</td><td>Not SA</td></tr>
<tr><td>3</td><td>2222</td><td>Yes</td><td>Hardware</td></tr>
<tr><td>4</td><td>3333</td><td>Yes</td><td>Software</td></tr>
<tr><td>5</td><td>4444</td><td>No</td><td>Not SA</td></tr>
</tbody></table>
答案 0 :(得分:0)
所以你的起始DataFrame看起来像是:
Sales Order Product
0 1111 Software
1 1111 Support
2 2222 Hardware
3 3333 Software
4 4444 Hardware
5 4444 Software
首先create a new DataFrame来保存您的搜索结果。
res = pd.DataFrame(index=df['Sales Order'].unique(), columns=['Standalone', 'Product'])
然后填充它。这可以通过几种方式完成。以下是使用DataFrame.groupby
的方法。
for sales_order, dft in df.groupby('Sales Order'):
standalone = 'Yes' if len(dft) == 1 else 'No'
product = dft.iloc[0, 1] if len(dft) == 1 else 'Not SA'
res.loc[sales_order] = [standalone, product]