Python:Pandas 读取 csv:读取 csv 时向下转换

标签 python pandas csv

我遇到以下问题。我想读取一个包含数百万行和数百列的大型 csv。我想向下转换列的数据类型。我的方法是读取 csv,然后使用 pd.to_numeric() 对其进行向下转换。我不知道列数及其类型。在读取 csv 时是否有可能进行向下转换,这样我就不必触摸数据框两次?

我当前的方法是:

import pandas as pd
df = pd.read_csv(filePath, delimiter=delimiter, memory_map=True,engine='c', low_memory=True)
for column in df:
    if is_numeric_dtype(df[column]):
       df[column] = pd.to_numeric(df[column], downcast='signed')
       df[column] = pd.to_numeric(df[column], downcast='float')

提前致谢!

最佳答案

如果有人遇到同样的问题,您可以轻松阅读前两行,计算数据类型并将您首选的数据类型映射到它上面,并在读取整个文件时将其用作数据类型参数:

示例:

import pandas as pd
df = pd.read_csv(filePath, delimiter=delimiter, nrows=2, low_memory=True, memory_map=True,engine='c')
mapdtypes = {'int64': 'int8', 'float64': 'float32'}
dtypes = list(df.dtypes.apply(str).replace(mapdtypes))
dtype = {key: value for (key, value) in enumerate(dtypes)}
df = pd.read_csv(filePath, delimiter=delimiter, memory_map=True,engine='c', low_memory=True, dtype=dtype)

关于Python:Pandas 读取 csv:读取 csv 时向下转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54812001/

相关文章:

python - python urllib2中的自定义方法

python - 按分钟分组索引并计算平均值

python - 删除数据框中的重复元素python

java - ZLIB 流大型 csv 文件的意外结束

mysql - 如何在从我的sql表导出csv文件中的数据之前检查行数

python - 在 Pandas 数据框中的每一行中找到非零值的列索引集

python - tensorflow object detection faster rcnn 随机失败

java - Python 和 Java 中相同字符串的不同字符串编码

python - 按行附加 Pandas 数据框

json - 从 powershell 中提取嵌套的 json