是否有一种方法使用isin()作为计算器函数在熊猫数据框架的另一列?



在我的pandas数据框架中有一个列'PRODUCT_ID'。我想在此列的基础上创建一个计算列,其中[3,5,8]中的PRODUCT_IDs将取值为"old",其他值为"new"。

现在我正在使用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'

这段代码似乎花费了很多时间。有更好的方法吗?

我的数据如下:

tbody> <<tr>
CUSTOMERPRODUCT_ID其他列
23453-------------
34565-------------
27865-------------

使用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]是掩码
~是掩码

的否定

相关内容

  • 没有找到相关文章