对于新增列赋值df.loc[df['A'].isin(list_),'B']='b'的其他等效方法

61 阅读1分钟

针对 A 是否在 List_ 中进行赋值。由于这两行代码的逻辑是一样的,只是根据 A 是否在 List_ 中进行判断后赋不同的值,因此可以通过 numpy.wherepd.Series.map 来简化。

使用 numpy.where 来简化:

numpy.where 是一个条件语句,可以根据条件返回不同的值,相比两次 loc,使用 numpy.where 语法更简洁,效率也更高。

import numpy as np

df_main['B'] = np.where(df_main['A'].isin(List), 'b1', 'b2')

使用 pd.Series.map 来简化:

map 也是一种高效且简洁的方式,可以用于根据条件映射新值。

df_main['B'] = df_main['A'].map(lambda x: 'b1' if x in List else 'b2')

解释:

  1. np.where:根据 A 是否在 List 中进行判断,若条件为 True 则赋值为 'b1',若为 False 则也赋值 'b2'。这会将列中的值直接更新。
  2. map:我们使用 lambda 表达式对 A 列进行逐个判断并映射新值。

结果:

这两种方法都能以更简洁的形式实现与原代码相同的功能,减少了重复操作。