亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

選擇基于 where 語句的行

選擇基于 where 語句的行

回首憶惘然 2022-01-11 19:41:28
如何選擇其中包含“鏈接”一詞的值并將它們放入類別 1 和其中的“爆米花”以使它們成為類別 2 并將所有其他內容放入類別 3?這是一個示例,但我的實際數據集有數百行data = {'model': [['Lisa', 'link'], ['Lisa 2', 'popcorn'], ['telephone', 'rabbit']],        'launched': [1983, 1984, 1991]}df = pd.DataFrame(data, columns = ['model', 'launched'])期望的 Model                 launched         category ['Lisa', 'link']        1983             1 ['Lisa 2', 'popcorn']   1984             2 ['telephone', 'rabbit'] 1991             3
查看完整描述

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


查看完整回答
反對 回復 2022-01-11
?
一只名叫tom的貓

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

為您帶來相同的結果。


查看完整回答
反對 回復 2022-01-11
  • 2 回答
  • 0 關注
  • 164 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號