如果满足列值条件,则从数据框中删除行

removing rows from dataframe if column value condition is met

stables=["usdt","usdc","tusd"]

我名为“df”的数据框看起来像这样(实际数据框有数百行):

               pairs           apy  network            pool name
0        [eth, wbtc]  1.150699e+01   cometh      cometh-eth-wbtc
1        [usdt, usdc]  1.814333e+01  cometh      cometh-usdt-usdc
2     [must, pickle]  2.175891e+01   cometh      cometh-must-pickle
3        [usdt, eth]  1.237610e+02   cometh      cometh-usdt-eth
4       [eth, matic]  2.181968e+01   cometh      cometh-eth-matic

'pairs' 列包含项目列表。逐行进行,如果 'pairs' 列列表中的任何项目未包含在上面提供的 'stables' 列表中,我想删除整行。

在这种情况下,只有第二行(索引为 1)会保留在数据框中,因为这两项都在上面提供的 'stables' 列表中。

欢迎任何帮助。

感谢

假设 pairs 列实际上包含字符串列表,您可以展开该列,使用 isin 测试哪些元素是 stables 列表的成员,然后使用a groupby agg np.all 测试初始行的所有元素是否都是 stables:

的成员
temp = df.explode('pairs')
temp['keep'] = temp['pairs'].isin(stables)
temp = temp.groupby(level=0)['keep'].agg(np.all)

to_keep = df[temp]