簡體   English   中英

有沒有辦法使用 isin() 作為 pandas 數據框中另一列的計算器函數?

[英]Is there a way of using isin() as calculator function for another column in pandas dataframe?

我的熊貓數據框中有一列為“PRODUCT_ID”。 我想基於此列創建一個計算列,其中 [3、5、8] 中的 PRODUCT_ID 將取值“舊”而其他值“新”。

現在我正在使用 for 循環來檢查數據幀的每個索引。

portfoy['PRODUCT_TYPE'] = np.nan

for ind in portfoy.index:
    if portfoy.loc[ind, 'PRODUCT_CODE'] in [3, 5, 8]:
        portfoy.loc[ind, 'PRODUCT_TYPE'] = 'old'
    else:
        portfoy.loc[ind, 'PRODUCT_TYPE'] = 'new'

這段代碼似乎需要很多時間。 有一個更好的方法嗎?

我的數據看起來像:

顧客 PRODUCT_ID 其他欄目
2345 3 -------------
3456 5 -------------
2786 5 -------------

使用numpy.whereSeries.isin進行矢量化快速解決方案:

portfoy['PRODUCT_TYPE'] = np.where(portfoy['PRODUCT_CODE'].isin([3, 5, 8]), 'old', 'new')

您可以使用掩碼有條件地更新數據框

portfoy.loc[portfoy.PRODUCT_CODE.isin([3,5,8]),'PRODUCT_TYPE'] = 'old'

portfoy.loc[~portfoy.PRODUCT_CODE.isin([3,5,8]),'PRODUCT_TYPE'] = 'new'

portfoy.PRODUCT_CODE.isin([3,5,8] 是掩碼
~ 是掩碼的否定

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM