使用pandas读取含0和1的CSV转布尔值时遇ValueError报错求助
问题解决:pd.read_csv使用true_values/false_values时报错ValueError: Must be all encoded bytes
问题原因
你遇到的报错是因为StringIO中的内容是文本流,pandas读取时会将CSV里的0、1解析为字符串类型,但你传入的true_values=[1]和false_values=[0]是整数类型,类型不匹配导致报错。
解决方案
将true_values和false_values中的整数改为字符串形式,让其与CSV中的文本内容类型一致:
from io import StringIO import numpy as np import pandas as pd df = pd.read_csv(StringIO("""var1, var2 0, 0 0, 1 1, 1 0, 0 0, 1 1, 0"""), true_values=['1'], false_values=['0']) print(df)
输出结果
运行后会得到转换为布尔值的DataFrame:
var1 var2 0 False False 1 False True 2 True True 3 False False 4 False True 5 True False
内容的提问来源于stack exchange,提问作者G M
相关产品推荐
相关产品推荐

