<p>下面是另一种方法:</p>
<pre class="lang-py prettyprint-override"><code>import pandas as pd
# | Order_ID | Order_Date | Buyer_ID |
# | | | |
# | 123421 | 01/01/19 | a213422 |
# | 123421 | 01/01/19 | a213422 |
# | 123421 | 01/01/19 | a213422 |
# | 346345 | 01/03/19 | a213422 |
# | 567868 | 01/05/19 | a346556 |
# | 567868 | 01/05/19 | a346556 |
# | 234534 | 01/10/19 | a678909 |
df = pd.DataFrame.from_dict({
"Order_ID": [123421, 123421, 123421, 346345, 567868, 567868, 234534],
"Order_Date": ["01/01/19", "01/01/19", "01/01/19", "01/03/19", "01/05/19", "01/05/19", "01/10/19"],
"Buyer_ID": ["a213422", "a213422", "a213422", "a213422", "a346556", "a346556", "a678909"],
})
buyers_with_one_order = df.groupby(["Buyer_ID"]) \
.agg(num_orders=("Order_ID", pd.Series.nunique)) \
.query("num_orders == 1") \
.reset_index() \
.Buyer_ID
filtered_df = df.merge(buyers_with_one_order).drop_duplicates()
print(filtered_df.to_string(index=False))
# | Order_ID | Order_Date | Buyer_ID |
# | | | |
# | 567868 | 01/05/19 | a346556 |
# | 234534 | 01/10/19 | a678909 |
</code></pre>