从dtype('float64')到dtype('<u32')的数组数据。 safe =“” rule =“”

时间:2019-02-12 15:50:50

标签: python pandas scipy interpolation

=“”

为什么收到此错误:

Cannot cast array data from dtype('float64') to dtype('<U32') according to the rule 'safe'

运行此代码块时:

quantity_list = df2['Qauntity'].tolist()
date_list = df2['Date'].tolist()

interpol = interpolate.interp1d(y = quantity_list, 
                                x = date_list)

ynew = interpol(quantity_list)
plt.plot(date_list, ynew)

产生错误的行是:

ynew = interpol(quantity_list)

是否可以在所有笔记本电脑的头部连接减少内存容量

内存的一部分。减少上面代码中变量的代码

#memory reducing
dtypes = {
    'Date': 'object',
    ...
    'Quantity': 'float32'
}

def reduce_mem_usage(df, verbose = True):
    ...
    return df


numerics = ['int8', 'int16', 'int32', 'int64', 'float16', 'float32', 'float64']
numerical_columns = [c for c, v in dtypes.items() if v in numerics]
categorical_columns = [c for c, v in dtypes.items() if v not in numerics]

dtypes表示将文件上传到python时的数据集。

重要提示:

我也将'Date'的{​​{1}}从'object'更改为'datetime64[ns]'

  • df1['Date'] = pd.to_datetime(df1['Date'])产生np.array(quantity_list) dtype
  • float64产生np.array(date_list) dtype

如果我从代码主体中进行相同的日期转换,则会获得<U10 dtype。

这是什么魔术?

Pandas插值函数可以正常工作,但是pandas插值和scipy插值会产生不同的结果(https://github.com/pandas-dev/pandas/issues/8796),我需要scipy的结果。

0 个答案:

没有答案