我正在使用Pandas来阅读一堆CSV.将选项json传递给dtype参数以告诉pandas将哪些列读取为字符串而不是默认值:
dtype_dic= { 'service_id':str, 'end_date':str, ... }
feedArray = pd.read_csv(feedfile , dtype = dtype_dic)
Run Code Online (Sandbox Code Playgroud)
在我的场景中,除了一些特定的列之外的所有列都将被读作字符串.因此dtype_dic,我不想将几个列定义为str ,而是将我选择的几个列设置为int或float.有没有办法做到这一点?
它是循环遍历不同列的各种CSV的循环,因此在将整个csv读取为string(dtype=str)之后进行直接列转换并不容易,因为我不会立即知道csv具有哪些列.(我宁愿花费精力来定义dtype json中的所有列!)
编辑:但是,如果有一种方法可以处理要转换为数字的列名列表而不会出错,如果该列不存在于该csv中,那么是的,那将是一个有效的解决方案,如果没有别的方法可以做这在csv阅读阶段本身.
注意:这听起来像一个先前提出的问题,但那里的答案走了一条非常不同的路径(bool相关),这不适用于这个问题.请不要标记为重复!
我有一个大的 csv 文件(~10GB),大约有 4000 列。我知道我期望的大部分数据是 int8,所以我设置:
pandas.read_csv('file.dat', sep=',', engine='c', header=None,
na_filter=False, dtype=np.int8, low_memory=False)
Run Code Online (Sandbox Code Playgroud)
问题是,最后一列(第 4000 个位置)是 int32,我可以告诉 read_csv 默认使用 int8,在第 4000 列使用 int 32 吗?
谢谢