在Python中将DataFrame转换为Pandas数据框。

3

我从 pandas datareader 中收到的输出如下:

       Date        AAPL         ACN
0 2016-11-21  111.730003  119.680000
1 2016-11-22  111.800003  119.480003
2 2016-11-23  111.230003  119.820000
3 2016-11-25  111.790001  120.739998
4 2016-11-28  111.570000  120.760002

我认为该框架的外观如下:

       Date   Minor   Adj Close
0 2016-11-21  AAPL    111.730003  
1 2016-11-22  AAPL    111.800003  
2 2016-11-23  AAPL    111.230003  
3 2016-11-25  AAPL    111.790001  
4 2016-11-28  AAPL    111.570000  
0 2016-11-21  ACN     119.680000
1 2016-11-22  ACN     119.480003
2 2016-11-23  ACN     119.820000
3 2016-11-25  ACN     120.739998
4 2016-11-28  ACN     120.760002

我该如何将代码转换为输出上述内容?代码如下所示:

import pandas_datareader.data as pdr

DataLevels = pdr.DataReader(['ACN','AAPL'], 'yahoo', '2016-11-19', '2016-12-1')
DataLevels = DataLevels['Adj Close'].reset_index()
DataLevels.rename(columns={'minor': ['ACN','AAPL'], 'Adj Close': 'Adj Close'}, inplace=True)
print(DataLevels)

我收到了以下错误信息:SyntaxError: 标识符中有无效字符。 - MCM
1个回答

5
使用melt函数,将DF从宽格式转换为长格式:
pd.melt(df, id_vars=['Date'], value_name='Adj Close', var_name='Minor')

enter image description here


这个解决方案好多了 ;) - MaxU - stand with Ukraine
@MCM,如果你想在melting之后重命名列,你可以这样做- pd.melt(DataLevels['Adj Close'].reset_index(), id_vars=['Date'], value_name='Adj Close', var_name='Minor').rename(columns={'Minor': 'Ticker'})。由于您以前没有接受过答案,因此您可能希望这样做,以便向更广泛的社区表明此解决方案已成功解决了您的问题。 - Nickil Maveli
@NickilMaveli,抱歉再次询问。我本来以为我理解了melt函数,但现在似乎并不是这样。当尝试从雅虎获取所有数据(开盘价、最高价、最低价等)时,应该如何处理? - MCM
@NickilMaveli,你说得对。我发了一个单独的帖子。也许你可以看一下:http://stackoverflow.com/questions/42227023/try-to-include-an-column-based-input-and-file-name-in-pnadas-dataframe-in-python - MCM
@NickilMaveli,抱歉再次打扰您。当我使用雅虎财经提供的所有输出而不仅仅是adj_close时,我该如何使用melt函数? - MCM
显示剩余6条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接