
这将是精致的,如果你能填
NaN有发言权
0期间读取本身。也许Pandas的git-hub中有一个功能请求是为了…使用转换器功能
但是,暂时,您可以定义自己的函数来执行此 *** 作并将其传递给以下
converters参数
read_csv:
def conv(val): if val == np.nan: return 0 # or whatever else you want to represent your NaN with return valdf = pd.read_csv(file, converters={colWithNaN : conv}, dtypes=...)请注意,这
converters需要一个
dict,因此您需要为每个要处理NaN的列指定一个。如果影响许多色谱柱,可能会有些累。您可以指定列名称或数字作为键。
另请注意,这可能会降低
read_csv性能,具体取决于
converters函数的处理方式。此外,如果只有一列需要在读取过程中处理NaN,则可以跳过适当的函数定义,而使用
lambda函数:
df = pd.read_csv(file, converters={colWithNaN : lambda x: 0 if x == np.nan else x}, dtypes=...)分块阅读
您还可以将文件拼接成小块阅读,以获取最终输出。您可以通过这种方式做很多事情。这是一个说明性的示例:
result = pd.Dataframe()df = pd.read_csv(file, chunksize=1000)for chunk in df: chunk.dropna(axis=0, inplace=True) # Dropping all rows with any NaN value chunk[colToConvert] = chunk[colToConvert].astype(np.uint32) result = result.append(chunk)del df, chunk
请注意,此方法并不严格复制数据。有一段时间,数据在语句
chunk后紧接着存在两次
result.append,但只
chunksize重复行,这是一个合理的交易。此方法也可能比使用转换器功能更快。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)