我正在分块读取一个巨大的固定宽度文本文件,并将数据导出为csv。因为pandas.read_fwf不允许指定数据类型,所以我想知道是否存在其他方法来强制将列转换为字符串。原因是pandas会将一些列推断为浮点数,即使它们不是,我也不希望在列中出现.0
。
使用data[column] = data[column].astype(str)
没有用,因为它不能去掉小数点。将float64数据类型的列转换为int也不起作用,因为无法转换NAs。有什么想法吗?
这是我的代码片段:
dat = pd.read_fwf(file_to_read,colspecs=cols,header=None,chunksize=100000,names=header)
#First chunk
data.info()
Int64Index: 100000 entries, 0 to 99999
Columns: 562 entries,
dtypes: float64(405), int64(4), object(153)
memory usage: 429.5+ MB
for column in data.columns:
if data[column].dtype == 'float64':
data[column] = data[column].astype(int)
else:
pass
我可以使用str().replace('.0','')
,但是我想找到比迭代列更简单的方法,因为这需要很长时间。