尝试这个:
import pandas as pddef booleator(col): if str(col).lower() in ['true', 'yes']: return True #elif str(col).lower() == "false": # return False else: return Falsedf = pd.read_csv('data.csv', sep='s*,s*', index_col=0, converters={'roughness': booleator, 'unstab': booleator}, engine='python')print(df)print(df.dtypes)输出:
roughness unstab corr_c_w u_star c_starworkus True True -0.39 0.35 -0.99wang False False -0.50 NaN NaNcheng False True NaN NaN NaNwatanabe False False NaN 0.15 -0.80roughness boolunstab boolcorr_c_w float64u_star float64c_star float64dtype: object
这个版本也照顾布尔值-所有NaN都将转换为False,否则Pandas会将dtype提升为Object(请参阅我的评论中的详细信息)…



