如何在数据框列中查找系列

时间:2018-11-27 03:22:38

标签: python function dataframe

我有一个序列(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)

1 个答案:

答案 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 0int几乎相同,我相信您可以简单地使用.astype(int)(未经测试)