Pandas如何正确使用行筛选得到的df_filtered数据执行后续操作?
Pandas筛选后导出异常问题解决
问题根因
原有代码的操作顺序存在逻辑错位:行筛选得到df_filtered后,后续的列重命名、列筛选、导出操作默认针对全量的excel_data_df执行,若仅替换部分代码里的变量名,很容易出现操作对象还是全量表的情况,最终导出全量数据。
修正方案(第14行起直接替换原有代码即可)
所有后续操作全部针对已筛选完成的df_filtered执行,不要操作全量的excel_data_df:
# 对筛选后的数据集重命名列 df_filtered.columns = ['Code', 'Student Name', 'Class', 'School Name','City Name'] # 指定需要保留的列 cols_to_keep = ['Student Name', 'Class', 'School Name','City Name'] # 筛选目标列 df_filtered = df_filtered[cols_to_keep] # 导出为JSON文件 json_str = df_filtered.to_json(PathLink,orient='records',indent=2)
可选优化方案
你也可以调整操作顺序,先完成列重命名再做行筛选,逻辑更不容易出错:
# 先对全量数据集重命名列 excel_data_df.columns = ['Code', 'Student Name', 'Class', 'School Name','City Name'] # 再按条件筛选行,注意列名使用重命名后的`Code` df_filtered = excel_data_df.loc[lambda x: x['Code'] == 'AB123'] # 筛选目标列 cols_to_keep = ['Student Name', 'Class', 'School Name','City Name'] df_filtered = df_filtered[cols_to_keep] # 导出为JSON文件 json_str = df_filtered.to_json(PathLink,orient='records',indent=2)
内容的提问来源于stack exchange,提问作者Divya Sam
相关产品推荐
相关产品推荐

