Python 数据帧索引
我使用python3编写了一个计算数据的代码。代码如下:Python 数据帧索引,python,pandas,numpy,Python,Pandas,Numpy,我使用python3编写了一个计算数据的代码。代码如下: import pandas as pd import matplotlib.pyplot as plt import numpy as np def data(symbols): dates = pd.date_range('2016/01/01','2016/12/23') df=pd.DataFrame(index=dates) for symbol in symbols: df_temp=pd
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
def data(symbols):
dates = pd.date_range('2016/01/01','2016/12/23')
df=pd.DataFrame(index=dates)
for symbol in symbols:
df_temp=pd.read_csv("/home/furqan/Desktop/Data/{}.csv".format(symbol),
index_col='Date',parse_dates=True,usecols=['Date',"Close"],
na_values = ['nan'])
df_temp=df_temp.rename(columns={'Close':symbol})
df=df.join(df_temp)
df=df.fillna(method='ffill')
df=df.fillna(method='bfill')
df=(df/df.ix[0,: ])
return df
symbols = ['FABL','HINOON']
df=data(symbols)
print(df)
p_value=(np.zeros((2,2),dtype="float"))
p_value[0,0]=0.5
p_value[1,1]=0.5
print(df.shape[1])
print(p_value.shape[0])
df=np.dot(df,p_value)
print(df.shape[1])
print(df.shape[0])
print(df)
当我第二次打印
df
时,索引消失了。我认为问题在于矩阵乘法。如何将索引和列标题返回到df
要解决您的问题,因为您使用的是numpy方法,这些方法通常会返回numpy数组,这就是现有列和索引标签丢失的原因
所以不是
df=np.dot(df,p_value)
你能行
df=df.dot(p_value)
此外,由于p\u value
是一个纯numpy数组,因此此处没有列名,因此您可以使用现有列名创建df:
p_value=pd.DataFrame(np.zeros((2,2),dtype="float"), columns = df.columns)
或者在计算点积后直接覆盖列名,如下所示:
df.columns = ['FABL', 'HINOON']
尝试
df.dot(p_值)
可能发生的情况是np.dot
只是返回一个numpy数组,而不是返回一个dfget行索引,但是应该分别为FABL和HINOON的列标签分别被0和1替换。这是因为p_值是一个numpy数组。您可以从该数组创建一个df,传递列的名称,或者只将它们添加回来,例如,df.columns=['FABL',HINOON']
。谢谢!你可以接受我的答案,如果它解决了你的问题,我的答案左上角将有一个空的勾号