如何利用元组列表AB_col过滤Pandas DataFrame?
如何用元组列表过滤DataFrame的指定列?
你的思路方向是对的,但写法上有几个细节问题导致代码没生效,咱们来一步步修正:
首先,你原来写的df["A","B"]是错误的多列选择方式,要选取多列得用双层方括号df[['A', 'B']];另外DataFrame并没有zip方法,不能直接这么调用。
正确的做法是把每一行的A和B值拼成元组,再和AB_col里的元组做匹配,具体可运行的代码如下:
import pandas as pd AB_col = [(0,230), (10,215), (15, 200), (20, 185), (40, 177), (0,237), (10,222), (15, 207), (20, 192), (40, 184)] sales = [{'account': 'Jones LLC', 'A': 0, 'B': 230, 'C': 140}, {'account': 'Alpha Co', 'A': 20, 'B': 192, 'C': 215}, {'account': 'Blue Inc', 'A': 50, 'B': 90, 'C': 95 }] df = pd.DataFrame(sales) # 将A、B列的每行值转为元组,再判断是否在目标列表中 df_filtered = df[df[['A', 'B']].apply(tuple, axis=1).isin(AB_col)] print(df_filtered)
运行后会得到符合条件的两行结果:
account A B C 0 Jones LLC 0 230 140 1 Alpha Co 20 192 215
核心逻辑拆解:
df[['A', 'B']].apply(tuple, axis=1):遍历每一行,把该行的A和B值打包成一个元组,生成元组序列.isin(AB_col):检查每个元组是否存在于AB_col列表中,返回布尔值序列- 最后用这个布尔序列过滤原DataFrame,留下匹配的行
内容的提问来源于stack exchange,提问作者Yogi
相关产品推荐
相关产品推荐

