无法将布尔值转换为numpy.ndarray

2024-09-27 19:29:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧作为图像中的数据帧,我试图得到每列的对数回报率之和。这是通过将其列的第一个值减去每个值来实现的。由于存在一些NaN值,我想省略它们,但不删除它们,因此每个值的日期与开始时相同

我已经试过密码了

for x in AntCris.columns:
  for y in AntCris[x]:
    if np.isnan(y)==True:
      y=float('nan')
    else:
      y=np.log(AntCris[y,x])-np.log(AntCris[0,x])

我得到了错误键Cannot convert bool to numpy.ndarray。我读过this question,但没能修好。即使我要求type(AntCris[x,y])我也会得到同样的错误。 enter image description here

编辑: 我添加了我的数据集以及如何构建数据框架。我从我的资料来源下载了很多文件。为了统一它们的索引,我构建了一些日期集,并用它们重新定义了所有索引。在那之后,我将所有的数据帧集中在一个数据帧中。以下是代码本身:

def perdelta(start, end, delta):
   curr = start
   while curr < end:
       yield curr
       curr += delta

Trim20052020=[]
for result in perdelta(date(2005, 1, 1),date(2020,12,1),relativedelta(months=3)):
 Trim20052020.append(result)

Trim20072020=[]
for result in perdelta(date(2007, 1, 1),date(2020,12,1),relativedelta(months=3)):
 Trim20072020.append(result)

Men200542021=[]
for result in perdelta(date(2005, 1, 1),date(2021,4,2),relativedelta(months=1)):
 Men200542021.append(result)

Men200522021=[]
for result in perdelta(date(2005, 1, 1),date(2021,2,2),relativedelta(months=1)):
 Men200522021.append(result)

Gas_Natural=pd.read_csv('/content/gdrive/My Drive/E3i/gcolab/datos/natural-gas-prices-historical-chart.csv').dropna()
Gas_Natural.drop(Gas_Natural.columns[1],axis=1,inplace=True)
Gas_Natural['indice']=Men200542021
Gas_Natural.set_index('indice',inplace=True)
Gas_Natural.columns=['GasNatural']

PIB=pd.read_csv('/content/gdrive/My Drive/E3i/gcolab/datos/PIB_INE.csv',sep='\t',index_col=3, encoding='latin-1').dropna()#millones de euros
PIB=PIB.drop(columns=['Tipo de dato','Agregados macroeconómicos','Niveles y tasas'])
PIB['indice']=Trim20052020
PIB.set_index('indice',inplace=True)
PIB.columns=['PIB']


IPC=pd.read_csv('/content/gdrive/My Drive/E3i/gcolab/datos/IPC_INE.csv',sep='\t',index_col=2, encoding='latin-1').dropna()#índice como tal sin unidades
IPC=IPC.drop(columns=['Grupos ECOICOP','Tipo de dato'])
aux=Men200522021[::-1]
IPC['indice']=aux
IPC.set_index('indice',inplace=True)
IPC.columns=['IPC']
IPC[::-1]

paro=pd.read_csv('/content/gdrive/My Drive/E3i/gcolab/datos/paro_INE.csv',sep='\t',index_col=3, encoding='latin-1').dropna()#%
paro=paro.drop(columns=['Sexo','Comunidades y Ciudades Autónomas','Edad'])
aux=Trim20052020[::-1]
paro['indice']=aux
paro.set_index('indice',inplace=True)
paro.columns=['paro']
paro[::-1]

IPV=pd.read_csv('/content/gdrive/My Drive/E3i/gcolab/datos/IPV_INE.csv',sep='\t',index_col=3, encoding='latin-1').dropna()#índice como tal sin unidades. Solo de 2007 en adelante
cols = [0,1,2]
IPV.drop(IPV.columns[cols],axis=1,inplace=True)
aux=Trim20072020[::-1]
IPV['indice']=aux
IPV.set_index('indice',inplace=True)
IPV.columns=['IPV']
IPV[::-1]

IBEX=pd.read_pickle('/content/gdrive/My Drive/E3i/gcolab/datos/IBEX.pkl')
IBEX=IBEX.to_frame()
IBEX.columns=['IBEX']
IBEX.index.rename('indice', inplace=True)

SP500=pd.read_pickle('/content/gdrive/My Drive/E3i/gcolab/datos/SP500.pkl')
SP500=SP500.to_frame()
SP500.columns=['SP500']
SP500.index.rename('indice',inplace=True)

DowJones=pd.read_pickle('/content/gdrive/My Drive/E3i/gcolab/datos/DowJones.pkl')
DowJones=DowJones.to_frame()
DowJones.columns=['SP500']
DowJones.index.rename('indice',inplace=True)

Brent=pd.read_pickle('/content/gdrive/My Drive/E3i/gcolab/datos/Brent.pkl')
Brent=Brent.to_frame()
Brent.columns=['Brent']
Brent.index.rename('indice', inplace=True)

Oro=pd.read_pickle('/content/gdrive/My Drive/E3i/gcolab/datos/Oro.pkl')
Oro=Oro.to_frame()
Oro.columns=['Oro']
Oro.index.rename('indice', inplace=True)

Bonos=pd.read_csv('/content/gdrive/My Drive/E3i/gcolab/datos/BonoEspañol10Años.csv',index_col=0, encoding='latin-1').dropna()#índice como tal sin unidades. Solo de 2007 en adelante
cols = [1,2,3,4]
Bonos.drop(Bonos.columns[cols],axis=1,inplace=True)
Bonos.index.rename('Fecha',inplace=True)
Bonos.columns=['Bonos']
Bonos.index = pd.to_datetime(Bonos.index,dayfirst=True)

Datos=pd.concat([Gas_Natural,PIB,IPC,paro,IPV,IBEX,SP500,DowJones,Brent,Oro,Bonos], axis=1)

然后我从数据帧“Datos”中提取了一段时间:

AntCris=Datos.loc['2005-01-02':'2007-07-01']

Tags: columnscsvtruereadindexmydrivecontent

热门问题