2 回答

TA貢獻1777條經驗 獲得超10個贊
你可以使用np.select到組category到1或2取決于是否'link'還是'popcorn'被包含在一個給定的列表。集default到3的地方都沒有包含的情況:
import numpy as np
c1 = ['link' in i for i in df.model]
c2 = ['popcorn' in i for i in df.model]
df['category'] = np.select([c1,c2], [1,2], 3)
model launched category
0 [Lisa, link] 1983 1
1 [Lisa 2, popcorn] 1984 2
2 [telephone, rabbit] 1991 3

TA貢獻1906條經驗 獲得超3個贊
您可以使用應用功能:
創建一個定義:
def get_categories(row):
if 'link' in row.model:
return 1
elif 'popcorn' in row.model:
return 2
else:
return 3
然后這樣稱呼它:
df['category'] = df.apply(get_categories, axis=1)
df
輸出:
model launched category
0 [Lisa, link] 1983 1
1 [Lisa 2, popcorn] 1984 2
2 [telephone, rabbit] 1991 3
編輯:
根據@gred_data 評論,您實際上可以在一行中執行此操作以提高性能:
df['category'] = df.model.apply(lambda x: 1 if 'link' in x else 2 if 'popcorn' in x else 3)
df
為您帶來相同的結果。
添加回答
舉報