转置时最左边的列无法识别 - 雅虎财经 pandas
Left-most column not recognised when transposed - Yahoo finance pandas
我对编码还很陌生,但我真的很喜欢从 Yahoo Finance 中提取数据。到目前为止,我已经想出代码来降低 select 代码的收盘价,并计算每月的百分比变化 - 将其显示为具有 2 列的转置 table。在数据框中返回数据时,我希望能够使用 .columns 命名两列,但它似乎根本无法识别左侧的列(带有代码的列)。当我尝试将超过 1 个项目传递给 .column 时,它会提示我只有 1 列。有谁知道为什么会这样,以及我如何操作数据以识别左侧列?
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 [320]: transposed = transposed.reset_index()
In [321]: transposed.columns = ['code', 'Monthly % Change']
In [322]: transposed
Out[322]:
code Monthly % Change
0 AAPL 0.0520737
1 TSLA -0.0943342
我对编码还很陌生,但我真的很喜欢从 Yahoo Finance 中提取数据。到目前为止,我已经想出代码来降低 select 代码的收盘价,并计算每月的百分比变化 - 将其显示为具有 2 列的转置 table。在数据框中返回数据时,我希望能够使用 .columns 命名两列,但它似乎根本无法识别左侧的列(带有代码的列)。当我尝试将超过 1 个项目传递给 .column 时,它会提示我只有 1 列。有谁知道为什么会这样,以及我如何操作数据以识别左侧列?
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 [320]: transposed = transposed.reset_index()
In [321]: transposed.columns = ['code', 'Monthly % Change']
In [322]: transposed
Out[322]:
code Monthly % Change
0 AAPL 0.0520737
1 TSLA -0.0943342