我有一个序列(str值),我需要在dataframe列中查找存在性,并为每个具有1/0值的str值创建一个新列。下面是我的操作方式,需要帮助编写函数才能更有效地完成此任务。谢谢
游览, 啤酒厂 比萨, 餐厅, 餐饮, 酒店与旅游
Mydata['Tours'] = Mydata.categories.str.contains('Tours', regex=False)
Mydata['Breweries'] = Mydata.categories.str.contains('Breweries', regex=False)
Mydata['Pizza'] = Mydata.categories.str.contains('Pizza', regex=False)
Mydata['Restaurants'] = Mydata.categories.str.contains('Restaurants', regex=False)
Mydata['Food'] = Mydata.categories.str.contains('Food', regex=False)
Mydata['Hotels & Travel'] = Mydata.categories.str.contains('Hotels & Travel', regex=False)
Mydata['Tours'].apply(lambda x: 1 if x == True else 0)
Mydata['Breweries'].apply(lambda x: 1 if x == True else 0)
Mydata['Pizza'].apply(lambda x: 1 if x == True else 0)
Mydata['Restaurants'].apply(lambda x: 1 if x == True else 0)
Mydata['Food'].apply(lambda x: 1 if x == True else 0)
Mydata['Hotels & Travel'].apply(lambda x: 1 if x == True else 0)
答案 0 :(得分:0)
好像您只需要一个for
循环:
tags = ['Tours','Breweries','Pizza','Restaurants','Food','Hotels & Travel']
for tag in tags:
Mydata[tag] = Mydata.categories.str.contains(tag, regex=False)
Mydata[tag].apply(lambda x: 1 if x == True else 0)
顺便说一句lambda x: 1 if x == True else 0
与int
几乎相同,我相信您可以简单地使用.astype(int)
(未经测试)