跳过read_csv中缺少值的行

跳过read_csv中缺少值的行,第1张

跳过read_csv中缺少值的行

这将是精致的,如果你能填

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
重复行,这是一个合理的交易。此方法也可能比使用转换器功能更快。



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5673296.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-17
下一篇2022-12-17

发表评论

登录后才能评论

评论列表(0条)

    保存