【发布时间】:2020-03-22 15:58:30
【问题描述】:
我正在尝试将包含字符串格式的 True/False 和 null 值的列转换为布尔值。但无论我做什么,我最终都会得到所有 True 值或 False 下面是我的方法
考虑以下dataFrame
df = pd.DataFrame({'w':['True', np.nan, 'False'
'True', np.nan, 'False']})
df['w'].dtypes
Out: dtype('O')
df['w'].unique()
Out: array([True, nan, False], dtype=object)
d = {'nan': np.nan,'False':False, 'True': True}
df['w']=df['w'].map(d)
df['w'].dtypes
Out: dtype('O')
df['w'].unique()
array([nan], dtype=object)
我使用的另一种方法是关注this SO 帖子:
d = {'nan': 0,'False':0, 'True': 1 }
df['w']=df['w'].map(d)
df['w']=df['w'].astype('bool')
现在它变成 bool 但将所有值转换为 True
df['w'].dtypes
Out: dtype('bool')
df['w'].unique()
Out: array([ True])
我做错了什么? 我希望所有空值都为空
【问题讨论】:
-
你能分享所有相关的代码和数据吗?请参阅:minimal reproducible example。
-
@AlexanderCécile 我还能分享什么我已经添加了代码来生成我的数据框
-
第一种方法(地图)在我看来是正确的,不是吗?它有什么问题?
-
@AlexanderCécile 效果很好,我对 nan 加入他们感到有些困惑,这导致
dtypes成为对象,@jezrael ans/explanation 帮助解决了这个问题
标签: python pandas dataframe boolean