如果我只读取csv的一部分,我会得到以下数据结构。
如果我读取整个CSV文件并按照上述方法连接块,则会得到以下结构:
为什么分类变量会被转换成object/float64类型?如何避免这种类型的更改,特别是float64类型?
以下是连接代码:
<class 'pandas.core.frame.DataFrame'>
MultiIndex: 100000 entries, (2015-11-01 00:00:00, 4980770) to (2016-06-01 00:00:00, 8850573)
Data columns (total 5 columns):
CHANNEL 100000 non-null category
MCC 92660 non-null category
DOMESTIC_FLAG 100000 non-null category
AMOUNT 100000 non-null float32
CNT 100000 non-null uint8
dtypes: category(3), float32(1), uint8(1)
memory usage: 1.9+ MB
如果我读取整个CSV文件并按照上述方法连接块,则会得到以下结构:
<class 'pandas.core.frame.DataFrame'>
MultiIndex: 30345312 entries, (2015-11-01 00:00:00, 4980770) to (2015-08-01 00:00:00, 88838)
Data columns (total 5 columns):
CHANNEL object
MCC float64
DOMESTIC_FLAG category
AMOUNT float32
CNT uint8
dtypes: category(1), float32(1), float64(1), object(1), uint8(1)
memory usage: 784.6+ MB
为什么分类变量会被转换成object/float64类型?如何避免这种类型的更改,特别是float64类型?
以下是连接代码:
df = pd.concat([process(chunk) for chunk in reader])
process函数只是做一些清理和类型分配的工作。
NaN
的问题。 - Maarten Fabré