Ree*_*een 5 python csv boolean missing-data pandas
我正在尝试将 csv 导入到 Pandas 数据框中。我有用 1 和 0 表示的布尔变量,其中缺失值用 -9 标识。当我尝试将 dtype 指定为布尔值时,我会收到许多不同的错误,具体取决于我尝试的内容。
示例数据:test.csv
var1, var2
0, 0
0, 1
1, 3
-9, 0
0, 2
1, 7
Run Code Online (Sandbox Code Playgroud)
我尝试在导入时指定 dtype:
dtype_dict = {'var1':'bool','var2':'int'}
nan_dict = {'var1':[-9]}
foo = pd.read_csv('test.csv',dtype=dtype_dict, na_values=nan_dict)
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
ValueError:无法安全地将 |b1 的传递用户数据类型转换为第 0 列中的 int64 数据类型数据
我也试过指定真假值,
foo = pd.read_csv('test.csv',dtype=dtype_dict,na_values=nan_dict,
true_values=[1],false_values=[0])
Run Code Online (Sandbox Code Playgroud)
但后来我得到了一个不同的错误:
例外:必须是所有编码字节
错误的源代码说明了一些关于捕获偶尔无的信息,但无或空值正是我想要的。
您可以converters为var1列指定参数:
from io import StringIO
import numpy as np
import pandas as pd
pd.read_csv(StringIO("""var1, var2
0, 0
0, 1
1, 3
-9, 0
0, 2
1, 7"""), converters = {'var1': lambda x: bool(int(x)) if x != '-9' else np.nan})
Run Code Online (Sandbox Code Playgroud)