【发布时间】:2021-04-27 04:19:27
【问题描述】:
我正在尝试根据数据中名为“场地类别”的另一列中的值是否出现在特定列表中,在数据框中创建一个新列“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')
我最终希望出现在列表 Bar 中的 VenueCategory 列中的值被标记为“Bar”,而出现在列表 Museum_ArtGallery 中的值被标记为“Museum_ArtGallery”等。我上面的代码没有做到这一点。
我尝试这样做是为了保留我之前填写的值,但它仍然会覆盖我根据之前的条件填写的值:
df['BroadCategory'] = np.where(df[df.VenueCategory!='Other'].isin(Entertainment_Venue),'Entertainment Venue','Other')
如何根据 VenueCategory 列中的值是否出现在指定列表 Bar、Restaurant、Public_Transport、Museum_ArtGallery 等中,用特定值填充 BoardCategory 列?
【问题讨论】:
-
我试过了,但它给了我一个错误:df['BroadCategory'] = np.where(df[df.BroadCategory!='Other'].isin(Entertainment_Venue),'Entertainment Venue' ,'Other') 错误:值的长度与索引的长度不匹配
-
您可以尝试查找列的索引,然后使用 .loc 等
标签: python pandas dataframe numpy