能否将Pandas表达式转换为字符串?实现query()逆操作
Pandas表达式转换为字符串的方法
要把Pandas的筛选表达式转为对应字符串用于图表标题,这里提供两种实用方案:
方案1:利用inspect模块获取表达式源码
适合已经写好的表达式,通过封装为lambda函数来提取源码文本:
import inspect import pandas as pd # 示例DataFrame df = pd.DataFrame({'Date': ['2021', '2022', '2023']}) # 将目标表达式封装为lambda expr_lambda = lambda: df['Date'].ge('2022') # 提取并处理源码字符串 expr_str = inspect.getsource(expr_lambda).strip().split(':', 1)[-1].strip() # 输出结果:df['Date'].ge('2022') print(expr_str) # 用于图表标题示例 # plt.title(f"数据筛选:{expr_str}")
方案2:显式维护表达式字符串与执行逻辑
如果需要同时执行筛选和保留表达式文本,可以直接定义字符串并通过eval()执行:
import pandas as pd df = pd.DataFrame({'Date': ['2021', '2022', '2023']}) # 直接定义表达式字符串 expr_str = "df['Date'].ge('2022')" # 执行筛选 mask = eval(expr_str) filtered_df = df[mask] # 直接使用expr_str作为标题文本 print(f"图表标题:筛选条件 - {expr_str}")
注意事项
- 使用
eval()时要确保表达式字符串是可信的,避免注入风险 - 复杂多行表达式可能需要调整
inspect.getsource()的处理逻辑,比如去除多余换行或缩进
内容的提问来源于stack exchange,提问作者BSalita
相关产品推荐
相关产品推荐

