如果满足列值条件,则从数据框中删除行
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]
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]