如何在Pandas中传递变量过滤DataFrame?拆分文件名变量后返回空表
问题解决方法
核心错误原因
你的代码里的关键问题是把变量用单引号括起来了:
df1=df[(df['MSAN_IP'] == 'variable1') & (df['OUTER_VLAN'] == variable2)]
这里的'variable1'是固定字符串,不是你前面定义的变量variable1,程序会去匹配MSAN_IP字段等于字符串"variable1"的行,而非你从文件名提取的IP地址,自然找不到匹配结果,返回空DataFrame。
修正后的代码
去掉variable1的单引号,直接使用变量本身:
for txt in na_sheets: x = txt.replace('.txt', '') y = x.split("_", 1) variable1 = y[0] variable2 = y[1] # 直接使用变量variable1,不要加单引号 df1 = df[(df['MSAN_IP'] == variable1) & (df['OUTER_VLAN'] == variable2)] # 可添加df1的处理逻辑,比如打印或保存 print(df1)
额外排查点
如果修正后仍为空结果,检查以下情况:
- 数据类型匹配:若
df['OUTER_VLAN']是整数类型,需把variable2转为整数:variable2 = int(y[1]) - 文件名拆分正确性:在循环中打印变量值,确认提取的IP和VLAN符合预期:
print(f"提取的IP: {variable1}, VLAN: {variable2}") - 数据存在性:用已知存在的IP和VLAN单独测试过滤逻辑,确认
df中确实有对应数据。
内容的提问来源于stack exchange,提问作者asmaa mahmoud
相关产品推荐
相关产品推荐

