python怎么导入表格数据匹配_Python Dateframe列中匹配查找数据(list)添加新列的方法...

数据:ID Found_IDs

0 12345 [15443, 15533, 3433]

1 15533 [2234, 16608, 12002, 7654]

2 6789 [43322, 876544, 36789]

待查数据:bad_ids = [15533, 876544]df['bad_id'] = df['Found_IDs'].apply(lambda x: np.intersect1d(x, bad_ids))

ID Found_IDs bad_id

0 12345 [15443, 15533, 3433] [15533]

1 15533 [2234, 16608, 12002, 7654] []

2 6789 [43322, 876544, 36789] [876544]

2、使用set求交集bad_ids_set = set(bad_ids)

df['Found_IDs'].apply(lambda x: list(set(x) & bad_ids_set))

ID Found_IDs bad_id

0 12345 [15443, 15533, 3433] [15533]

1 15533 [2234, 16608, 12002, 7654] []

2 6789 [43322, 876544, 36789] [876544]

3、使用列表表达式实现bad_ids = [15533, 876544]

df['bad_id'] = [any(c in l for c in bad_ids) for l in df['Found_IDs']]

print (df)

ID Found_IDs bad_id

0 12345 [15443, 15533, 3433] True

1 15533 [2234, 16608, 12002, 7654] False

2 6789 [43322, 876544, 36789] True

4、使用apply和np.any实现df['bad_id'] = df['Found_IDs'].apply(lambda x: np.any([c in x for c in bad_ids]))

或者df['bad_id'] = df['Found_IDs'].apply(lambda x: [*filter(lambda x: c in x, bad_ids)])

5、 使用pd.concat和merge实现bad_ids = [15533, 876544, 36789, 11111]

df2 = pd.concat(

[

df,

pd.merge(

df["Found_IDs"].explode().reset_index(),

pd.Series(bad_ids, name="bad_ids"),

left_on="Found_IDs",

right_on="bad_ids",

how="inner",

)

.groupby("index")

.agg(bad_ids=("bad_ids", list)),

],

axis=1,

).fillna(False)

print(df2)

ID Found_IDs bad_ids

0 12345 [15443, 15533, 3433] [15533]

1 15533 [2234, 16608, 12002, 7654] False

2 6789 [43322, 876544, 36789] [876544, 36789]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值