Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 数据帧索引_Python_Pandas_Numpy - Fatal编程技术网

Python 数据帧索引

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

我使用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.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']
。谢谢!你可以接受我的答案,如果它解决了你的问题,我的答案左上角将有一个空的勾号