我正在开发一个 python 应用程序,并且正在使用 pandas 数据框。不幸的是,我有这个警告:
“设置不兼容的数据类型的项目已被弃用,并且会在 pandas 的未来版本中引发错误。值 '[149.7 149.7 149.7 149.7]' 的数据类型与 float64 不兼容,请首先显式转换为兼容的数据类型。 df1.loc[tmp_idx_start:tmp_idx_start+tmp_idx-1, 'AuM'] = (feesPrefinancing.loc[:tmp_idx-1, '费用'] + FeesMobiDeferred.loc[:tmp_idx-1, '费用'] + FeesLTQDeferred.loc[ :tmp_idx-1, '费用']).values ”
这是我的代码:
df1['Date'] = pd.to_datetime(pd.date_range(simulationDate, end=feesLTQDeferred['Valuation date'].iloc[-1], freq='MS', inclusive='both').date)
df1['AuM'] = 0.
df1.loc[4:7, 'AuM'] = (feesPrefinancing.loc[:3, 'Fees'] + feesMobiDeferred.loc[:3, 'Fees'] + feesLTQDeferred.loc[:3, 'Fees']).values
df1.loc[8:, 'AuM'] = (annuities['Invested annuity'].values + feesPrefinancing.loc[4:, 'Fees'].values + feesMobiDeferred.loc[4:, 'Fees'].values + feesLTQDeferred.loc[4:, 'Fees'].values)
正如您所猜测的,我有一个数据框,第一列是日期,第二列应该包含浮点数。这就是为什么我用“0”初始化该列。值(这也是我在其他帖子上读到的解决此错误的内容)。不幸的是,即使通过使用一些“astype”和其他类似的东西来投射线条,这个警告也不会消失。
你知道如何解决这个问题吗?
您将非严格浮点数的数据类型分配给
AuM
,在使用 0.
初始化时设置为浮点数
将正确的数据类型分配给
AuM
:
import numpy as np
import pandas as pd
df1['Date'] = pd.to_datetime(pd.date_range(simulationDate, end=fees:TQDeferred['Valuation date'].iloc[-1], freq='MS', inclusive='both').date)
df1['AuM'] = 0.0
df1.loc[4:7, 'AuM'] = (feesPrefinancing.loc[:3, 'Fees'] + feesMoboDeferred.loc[:3, 'Fees'] + feesLTQDeferred.loc[:3, 'Fees']).astype(np.float64).values
df1.loc[8:, 'AuM'] = (annuities['Invested annuity'] + feesPrefinancing.loc[4:, 'Fees'] + feesMobiDeferred.loc[4:, 'Fees'] + feesLTQDeferred.loc[4:, 'Fees']).astype(np.float64).values
float64