我试图在数据框中创建一个新的列“BroadCategory”,它基于数据中另一个名为“场馆类别”的列中的值是否出现在特定列表中。我有5个列表,用于填写新列中的值
例如:
df['BroadCategory'] = np.where(df['VenueCategory'].isin(Bar),'Bar','Other')
df['BroadCategory'] = np.where(df['VenueCategory'].isin(Museum_ArtGallery),'Museum/Art Gallery','Other')
df['BroadCategory'] = np.where(df['VenueCategory'].isin(Public_Transport),'Public Transport','Other')
df['BroadCategory'] = np.where(df['VenueCategory'].isin(Restaurant_FoodVenue),'Restaurant/Food Venue','Other')
我最终希望列表栏中出现的VenueCography列中的值被标记为“Bar”,列表Museum\u ArtGallery中出现的值被标记为“Museum\u ArtGallery”,等等。我上面的代码无法实现这一点
我尝试这样做是为了保留我以前填写的值,但它仍然会覆盖我根据以前的条件填写的值:
df['BroadCategory'] = np.where(df[df.VenueCategory!='Other'].isin(Entertainment_Venue),'Entertainment Venue','Other')
如何根据VenueContegory列中的值是否出现在指定的列表栏、餐厅、公共交通、博物馆艺术画廊等中,用特定值填充BoardCategory列
您的解决方案已经接近。只是为了不覆盖以前的值,您应该获得行的子集,并且只在子集上设置新值
为此,您可以首先将新列
BroadCategory
初始化为“Other”。然后,通过使用.isin()
函数(就像您现在使用的那样)使用布尔掩码为新列下标,设置每个类别的行子集。代码如下所示:支持你的数据是这样的
准备字典:
生成新列并打印结果:
相关问题 更多 >
编程相关推荐