You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多列索引DataFrame中转换0和1为bool并保留pd.NA

解决方案

要将DataFrame中的0/1转换为布尔类型(False/True)并保留pd.NA,核心是利用pandas的Nullable Boolean类型(boolean dtype),它原生支持缺失值pd.NA。以下是几种简洁高效的实现方式:

方法1:直接使用astype('boolean')

这是最直接的方式,pandas会自动将0映射为False、1映射为True,同时保留原有的pd.NA:

df_bool = df.astype('boolean')
print(df_bool)

输出结果:

level1     a                    b                  
level2   NaN                  NaN                  
level3     c     c     c     c     c     c     c     c
0       True  <NA>  False  <NA>  False   True  <NA>  <NA>
1       <NA>  False   True  <NA>  <NA>  <NA>  False  False
2      False   True   True   True  False  <NA>  <NA>  False

方法2:自定义映射(更灵活)

如果需要更精细的控制(比如后续扩展其他值的转换),可以用replace配合类型转换:

df_bool = df.replace({0: False, 1: True}).astype('boolean')

注意事项

  • 确保你的pandas版本≥1.0.0,因为Nullable Boolean类型是从这个版本开始引入的。
  • 不要使用numpy的bool dtype(即astype(bool)),它会把pd.NA强制转换为True,丢失缺失值信息。

内容的提问来源于stack exchange,提问作者Andi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 22:45:41