如何在Python Pandas中修改含NaN值的浮点数列的显示格式?
Pandas含NaN浮点列的显示格式调整需求
现有如下Pandas DataFrame:
col ------- 7.0 2.0 NaN ...
其中col为float类型,希望将浮点数值的显示格式从7.0改为7,但因存在NaN无法直接转为int类型,期望结果:
col ------- 7 2 NaN ...
方法1:转为可空整数类型(修改数据类型)
Pandas支持可空整数类型(Int64,注意大写I),该类型允许列中存在NaN值,转换后数值会以整数形式显示:
import pandas as pd # 假设你的DataFrame名为df df['col'] = df['col'].astype('Int64')
转换后,列的类型变为Int64,数值显示为整数,NaN值保留。
方法2:仅调整显示格式(不修改数据类型)
如果不想改变原数据的float类型,只是调整显示效果,可以用style.format设置格式规则:
# 定义格式化函数,对非NaN值去掉小数部分,NaN保持原样 def format_float(x): if pd.notna(x): return f"{int(x)}" return x # 应用格式 styled_df = df.style.format({'col': format_float}) # 显示格式化后的DataFrame styled_df
这种方法不会修改原始数据的类型,只是在显示时调整格式。
方法3:简洁的lambda写法
可以用lambda函数简化格式化逻辑:
styled_df = df.style.format({'col': lambda x: f"{int(x)}" if pd.notna(x) else x})
内容的提问来源于stack exchange,提问作者dingaro
相关产品推荐
相关产品推荐

