Python 转换时无法识别最左边的列-Yahoo finance pandas

Python 转换时无法识别最左边的列-Yahoo finance pandas,python,pandas,dataframe,transpose,yahoo-finance,Python,Pandas,Dataframe,Transpose,Yahoo Finance,我对编码非常陌生,但我真的很喜欢从雅虎财经网站上获取数据。到目前为止,我已经找到了一些代码,用于计算部分股票的收盘价,并计算每月的百分比变化——将其显示为一个有2列的转置表。在数据框中返回数据时,我希望能够使用.columns来命名这两个列,但它似乎根本无法识别左侧的列(带标记的列)。当我尝试将多个项传递给.column时,会出现一个错误,即只有一列。有人知道为什么会这样吗?我如何处理数据以识别左侧列 symbols_list = ["AAPL", "TSLA"] d = {}

我对编码非常陌生,但我真的很喜欢从雅虎财经网站上获取数据。到目前为止,我已经找到了一些代码,用于计算部分股票的收盘价,并计算每月的百分比变化——将其显示为一个有2列的转置表。在数据框中返回数据时,我希望能够使用.columns来命名这两个列,但它似乎根本无法识别左侧的列(带标记的列)。当我尝试将多个项传递给.column时,会出现一个错误,即只有一列。有人知道为什么会这样吗?我如何处理数据以识别左侧列

    symbols_list = ["AAPL", "TSLA"]
    d = {}
    for x in symbols_list:
        try:
          d[x] = web.DataReader(x, "yahoo", '2015-12-31')
        except:
          print "Can't find ", x
    ticker = pd.Panel(d)
    df1 = ticker.minor_xs('Adj Close')
    daily = df1.resample('B', how=lambda x: x)

    monthly_change = daily.pct_change(periods = 24)

    past_month_change = monthly_change.tail(1)

    transposed = past_month_change.transpose()

    transposed.columns = ["Monthly % Change"] #This works, but only names the right column, not the left. 

执行代码后,我有以下几点:

In [317]: transposed.columns
Out[317]: DatetimeIndex(['2016-06-03'], dtype='datetime64[ns]', name='Date', freq='B')

In [318]: transposed.info()
<class 'pandas.core.frame.DataFrame'>
Index: 2 entries, AAPL to TSLA
Data columns (total 1 columns):
2016-06-03 00:00:00    2 non-null object
dtypes: object(1)
memory usage: 32.0+ bytes

执行代码后,我有以下几点:

In [317]: transposed.columns
Out[317]: DatetimeIndex(['2016-06-03'], dtype='datetime64[ns]', name='Date', freq='B')

In [318]: transposed.info()
<class 'pandas.core.frame.DataFrame'>
Index: 2 entries, AAPL to TSLA
Data columns (total 1 columns):
2016-06-03 00:00:00    2 non-null object
dtypes: object(1)
memory usage: 32.0+ bytes

列可以包含多个项目的列表。你只传递一个。正如@Parfait已经说过你应该这样做:
df.columns=['col1','col2','colN']
或者你也可以这样做:
df=df.rename(columns={'col1':'left','col5':'new col\u name})
对不起,也许我不清楚。如果我尝试传递多个项目,则会出现一个错误,即只有1列,但有2列标题。
转置
-是一个包含一列和一行的DF,因此没有第二列<代码>日期“列”(包含股票代码)是一个索引。如果您想将标记作为列而不是索引,可以这样做:
transposed=transposed.reset_index()
Columns可以获取多个项目的列表。你只传递一个。正如@Parfait已经说过你应该这样做:
df.columns=['col1','col2','colN']
或者你也可以这样做:
df=df.rename(columns={'col1':'left','col5':'new col\u name})
对不起,也许我不清楚。如果我尝试传递多个项目,则会出现一个错误,即只有1列,但有2列标题。
转置
-是一个包含一列和一行的DF,因此没有第二列<代码>日期“列”(包含股票代码)是一个索引。如果您想将ticker作为列而不是索引,可以这样做:
transposed=transposed.reset_index()
Perfect,这正是我想要的。谢谢大家!@安迪,总是很乐意帮忙!:)谢谢你接受答案!太好了,这正是我想要的。谢谢大家!@安迪,总是很乐意帮忙!:)谢谢你接受答案!