如何解决熊猫:如何添加表示数据框中2个属性的交集的列
让我说我有2个CSV文件(非常大的文件),
- 第一个文件代表餐厅,并具有6个属性
restaurant_id
,name
,star_rating
,city
,zone
,closed
因此,我要做的基本上是在功能中添加一个名为zone_categories_intersection
的列,它告诉我同一地区(区域)中与餐厅共享至少一个类别的餐厅数量有问题。
由于这是我第一次使用熊猫库,所以在处理表格时我会流利一些。我这样做是为了找出与所讨论餐厅相关的区域中餐厅的数量,并将其添加到我的功能列中。
restaurants['nb_restaurants_zone'] = restaurants.groupby('zone')['zone'].transform('size')
restaurants.head()
features = restaurants[['restaurant_id','moyenne_etoiles','ville','zone','ferme','nb_restaurants_zone']].copy()
features.head()
#edit
merged = restaurants.merge(categories,on='restaurant_id')
merged.head()
我考虑过添加category.csv
文件并将其与餐厅合并,并使用相应的ID映射类别,然后找出一种方法来应用第二个条件(与餐厅)...但是我真的不知道该怎么做
谢谢
解决方法
尝试一下
# sample data
# (it's not exactly your provided data
# but it is better to show how the code works)
# please always provide a callable line of code
# you could get it with `df.head().to_dict('split')`
rest = pd.DataFrame({
'id': [1,2,3,4,5],'name': ['Denny\'s','Ike\'s Love & Sandwiches','Midori Japanese','Pho U','John & Sons Oysters'],'avg_stars': [2.5,3.5,4],'city': ['Las Vegas','Phoenix','Calgary','Toronto','Toronto'],'zone': ['a','a','b','a']
})
cats = pd.DataFrame([
[1,['Breakfast','Dinners','American']],[2,['Sandwiches',[3,['Japanese']],[4,[5,['American','Seafood']]
],columns=['id','category']).explode('category')
代码
# add zone to categories dataframe
cats2 = cats.merge(rest[['id','zone']],on='id')
# add count for zone & category
cats2['zone_cat_count'] = (
cats2.groupby(['zone','category'])
.transform('count')
)
# merge with rest dataframe
rest = rest.merge(
cats2.groupby('id')['zone_cat_count'].max(),on='id'
)
输出
id name avg_stars city zone zone_cat_count
0 1 Denny's 2.5 Las Vegas a 3
1 2 Ike's Love & Sandwiches 4.0 Phoenix a 3
2 3 Midori Japanese 3.5 Calgary b 2
3 4 Pho U 3.5 Toronto b 2
4 5 John & Sons Oysters 4.0 Toronto a 3
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。