对DataFrame执行fillna填充后如何无需重复代码重新排序?
问题原因
你在排序操作完成后才执行了空值填充,填充后Age列的数值发生了变更,原有排序是基于填充前的数值计算的,因此填充后排序结果失效,才会出现13.5数值位置不符合排序规则的情况。
解决方案
可以通过提前封装排序参数的方式避免重复编写相同的排序代码,操作方式如下:
- 预先将排序规则存储为字典变量,和你原有排序逻辑完全一致:
sort_params = { "by": ["Age", "Gender"], "ascending": [False, True], "ignore_index": True, "inplace": True }
- 首次排序时直接解包参数调用即可:
class_data.sort_values(**sort_params)
- 空值填充完成后,需要重新排序时仅需执行同一句代码即可,不需要重复编写所有参数:
# 空值填充完成后重新排序 class_data.sort_values(**sort_params)
如果需要在多份DataFrame上复用相同的排序逻辑,也可以把排序逻辑封装成函数调用:
def custom_sort(df): return df.sort_values(by=['Age','Gender'],ascending=[False,True], ignore_index=True) # 调用时直接传入DataFrame即可 class_data = custom_sort(class_data)
内容的提问来源于stack exchange,提问作者Rachel L
相关产品推荐
相关产品推荐

