基于SQL查询创建分组DataFrame及非列字段过滤的可行性咨询
问题解答
首先明确:你说的这种场景没办法直接实现。
原因很直接:SQL查询里的过滤条件本质是基于数据表(对应你的DataFrame)里的字段数据来筛选的,如果SALESREP这个字段根本不在原DataFrame里,连对应的数据都没有,自然没法基于它做任何过滤逻辑,更别说以此为基础创建分组DataFrame了。
如果你的SALESREP数据来自其他地方(比如另一个DataFrame、外部CSV/数据库),可以先把这个字段合并到原DataFrame中,之后有两种常用的处理方式:
用pandas原生方法处理:
先合并数据,再筛选+分组+选列,示例代码:# 假设merged_df是合并了SALESREP字段后的DataFrame filtered_grouped = merged_df[merged_df['SALESREP'] == 'JAI'].groupby('DATE')[['DATE', 'TOTAL$', 'TOTAL#']].first()(这里的
first()只是分组聚合的示例,你可以根据需求换成sum()、mean()等聚合函数)用SQL语法直接查询:
可以借助pandasql库,它允许你直接用SQL语句查询DataFrame。示例代码:from pandasql import sqldf # 定义一个便捷函数 run_query = lambda q: sqldf(q, globals()) # 写SQL查询,注意带特殊符号的字段要加反引号 result_df = run_query("SELECT DATE, `TOTAL$`, `TOTAL#` FROM merged_df WHERE SALESREP='JAI' GROUP BY DATE")
内容的提问来源于stack exchange,提问作者Rebecca Maria
相关产品推荐
相关产品推荐

