擅长:python、mysql、java
<p>您的解决方案已经接近。只是为了不覆盖以前的值,您应该获得行的子集,并且只在子集上设置新值</p>
<p>为此,您可以首先将新列<code>BroadCategory</code>初始化为“Other”。然后,通过使用<code>.isin()</code>函数(就像您现在使用的那样)使用布尔掩码为新列下标,设置每个类别的行子集。代码如下所示:</p>
<pre><code>df['BroadCategory'] = 'Other'
df['BroadCategory'][df['VenueCategory'].isin(Bar)] = 'Bar'
df['BroadCategory'][df['VenueCategory'].isin(Museum_ArtGallery)] = 'Museum/Art Gallery'
df['BroadCategory'][df['VenueCategory'].isin(Public_Transport)] = 'Public Transport'
df['BroadCategory'][df['VenueCategory'].isin(Restaurant_FoodVenue)] = 'Restaurant/Food Venue'
df['BroadCategory'][df['VenueCategory'].isin(Entertainment_Venue)] = 'Entertainment Venue'
</code></pre>