如何删除DataFrame中from和to列均含指定列表元素的行
问题描述
现有如下DataFrame:
from to value A B 2 Z B 5 C A 7 A C 7 D E 7 G H 5 H E 4 F C 2 A P 4 ..
以及ID列表:
lst = ['A', 'C', 'D', 'F']
需求:删除from列和to列的值同时属于该列表的行,期望得到的结果如下:
from to value A B 2 Z B 5 D E 7 G H 5 H E 4 A P 4 ..
解决方案
可以利用Pandas的布尔索引实现需求,具体代码如下:
import pandas as pd # 构造示例DataFrame(实际使用时替换为你的原始数据) df = pd.DataFrame({ 'from': ['A', 'Z', 'C', 'A', 'D', 'G', 'H', 'F', 'A'], 'to': ['B', 'B', 'A', 'C', 'E', 'H', 'E', 'C', 'P'], 'value': [2, 5, 7, 7, 7, 5, 4, 2, 4] }) lst = ['A', 'C', 'D', 'F'] # 筛选出不同时满足from和to都在列表中的行 filtered_df = df[~(df['from'].isin(lst) & df['to'].isin(lst))] print(filtered_df)
代码说明
df['from'].isin(lst):检查from列的每个值是否存在于目标列表,返回布尔类型的Seriesdf['to'].isin(lst):同理检查to列的值是否在列表中&:执行逻辑与操作,得到标记“from和to都在列表内”的布尔Series~:对上述结果取反,筛选出需要保留的行(即不同时满足两个条件的行)
运行代码后即可得到符合预期的DataFrame。
内容的提问来源于stack exchange,提问作者Olive
相关产品推荐
相关产品推荐

