我正在使用大型数据框。为了节省内存,我想使用整数(int32)而不是浮点数。
import pandas as pd
import numpy as np
df = pd.DataFrame({'date': pd.date_range(start='2016-01-01', periods=4, freq='W'),
'group': [1, 1, 2, 2],
'val': [5, 6, 7, 8]})
df['val'] = df['val'].astype(np.int32)
df.set_index('date', inplace=True)
df['val'].dtype
#[out] dtype('int32')
在数据框上调用resample()不会改变类型。
df1 = df.resample('1D', fill_method='ffill')
df1['val'].dtype
#[out] dtype('int32')
但是,在group by语句中调用resample()时,会返回float类型!
df2 = df.groupby('group').resample('1D', fill_method='ffill')
df2['val'].dtype
#[out] dtype('float64')
为什么val
在group by语句中转换为float?我怎样才能避免这种转换以节省内存?我使用的是Pandas 17.1和Numpy 1.10.1。