Python中如何将DataFrame内值为t/f的object类型变量转换为boolean类型?
把DataFrame中't'/'f'格式的object列转为boolean类型
嘿,刚学Python处理DataFrame的时候我也碰到过这个问题!别担心,其实有好几种简单又高效的方法能帮你把那些存成't'/'f'的object列转成boolean类型,我给你整理几个常用的:
方法1:用map()函数精准映射
这是最直观的方式,直接把't'对应True,'f'对应False,最后转成布尔类型:
# 转换单个列 df['your_column_name'] = df['your_column_name'].map({'t': True, 'f': False}).astype(bool) # 如果要批量处理多个列(先把需要转换的列名存在列表里) bool_cols = ['col_a', 'col_b', 'col_c'] df[bool_cols] = df[bool_cols].apply(lambda col: col.map({'t': True, 'f': False})).astype(bool)
要是你的数据里有缺失值,还可以在映射字典里加上对缺失值的处理,比如{'t': True, 'f': False, pd.NA: pd.NA},这样就能保留原有的缺失状态啦。
方法2:用replace()替换后转类型
和map思路类似,先替换值再转换数据类型:
# 单列转换 df['your_column_name'] = df['your_column_name'].replace({'t': True, 'f': False}).astype(bool) # 批量处理多列 df[bool_cols] = df[bool_cols].replace({'t': True, 'f': False}).astype(bool)
方法3:借助数值转换间接转布尔
先把't'和'f'转成1和0,再转成布尔类型(True对应1,False对应0):
df['your_column_name'] = pd.to_numeric(df['your_column_name'].replace({'t': 1, 'f': 0})).astype(bool)
转换完成后,你再用df.info()检查一下,这些列的数据类型就会变成bool啦!
内容的提问来源于stack exchange,提问作者gir emee
相关产品推荐
相关产品推荐

