将pandas数据帧保存为32位浮点数

时间:2015-07-15 10:32:11

标签: python pandas

我在熊猫中有一些数据,我试图保存为32位浮点数,但我总是得到64位浮点数。我最好的尝试是:

df['store'] = pd.DataFrame(data).astype(float32) 

但它不起作用..任何想法?

2 个答案:

答案 0 :(得分:0)

延伸接受的答案。请注意,如果内存受限制或您想要更多空间,则可以选择df['a'].astype(np.float32)作为答案,或同等替换np.float16,或np.float64代替数字,np.int16,{{ 1}},np.int32表示整数,如果您的应用程序的准确性很好,您可以将许多应用程序转移到np.int64 / int16并缩小数据占用空间。

答案 1 :(得分:0)

我不得不将所有数字列转换为 32 位,并且单独进行是不可扩展的。这是使用 pd.to_numeric -

的另一种方法
# Creating an example DF
int_values = [1, 2, 3, 4, 5]
text_values = ["alpha", "beta", "gamma", "delta", "epsilon"]
float_values = [0.0, 0.25, 0.5, 0.75, 1.0]
df = pd.DataFrame({
    "int_col": int_values,
    "text_col": text_values,
    "float_col": float_values
})

print(df)
   int_col text_col  float_col
0        1    alpha       0.00
1        2     beta       0.25
2        3    gamma       0.50
3        4    delta       0.75
4        5  epsilon       1.00
df1 = df.apply(
    func=lambda x: pd.to_numeric(arg=x, errors="ignore", downcast="float"),
    axis=0)

print(df1)
   int_col text_col  float_col
0      1.0    alpha       0.00
1      2.0     beta       0.25
2      3.0    gamma       0.50
3      4.0    delta       0.75
4      5.0  epsilon       1.00

您可以使用 pd.info()

检查原始 df 和转换后的 df2
print(df.info(), df1.info())
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 5 entries, 0 to 4
Data columns (total 3 columns):
 #   Column     Non-Null Count  Dtype  
---  ------     --------------  -----  
 0   int_col    5 non-null      int64    <--
 1   text_col   5 non-null      object 
 2   float_col  5 non-null      float64  <--
dtypes: float64(1), int64(1), object(1)
memory usage: 248.0+ bytes
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 5 entries, 0 to 4
Data columns (total 3 columns):
 #   Column     Non-Null Count  Dtype  
---  ------     --------------  -----  
 0   int_col    5 non-null      float32  <--
 1   text_col   5 non-null      object 
 2   float_col  5 non-null      float32  <--
dtypes: float32(2), object(1)
memory usage: 208.0+ bytes
None None