重新采样将int转换为float,但仅限于group by

时间:2016-01-29 12:56:59

标签: python pandas

我正在使用大型数据框。为了节省内存,我想使用整数(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。

0 个答案:

没有答案