在python中转换帧熊猫

Posted

技术标签:

【中文标题】在python中转换帧熊猫【英文标题】:Convert frame pandas in python 【发布时间】:2016-12-11 21:37:44 【问题描述】:

我从我的 pandas 数据阅读器收到如下输出:

       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)

【问题讨论】:

@MaxU 我收到以下错误消息:SyntaxError: invalid character in identifier 【参考方案1】:

使用meltDF 从宽格式重塑为长格式:

pd.melt(df, id_vars=['Date'], value_name='Adj Close', var_name='Minor')

【讨论】:

这个解决方案要好得多;) @MaxU,谢谢。 @MCM,您可以简单地将df 替换为您的“DataLevels”:pd.melt(DataLevels['Adj Close'].reset_index(), id_vars='Date', value_name='Adj Close', var_name='Minor') @MCM,如果你想在熔化后重命名列,你可以这样做 - pd.melt(DataLevels['Adj Close'].reset_index(), id_vars=['Date'], value_name='Adj Close', var_name='Minor').rename(columns='Minor': 'Ticker')。由于您之前没有accepted answers,因此您可能希望这样做,以便向更广泛的社区表明此解决方案已成功解决您的问题。 @NickilMaveli 非常感谢。我只是想得更快,因为我可以删除我的帖子:)。我觉得帖子可以关了。

以上是关于在python中转换帧熊猫的主要内容,如果未能解决你的问题,请参考以下文章

熊猫数据帧功能

Python熊猫中的组合数据帧

如何从内存中删除多个熊猫(python)数据帧以节省 RAM?

Python:在熊猫数据帧上使用多处理

Python,熊猫连接多个数据帧

如何在熊猫中连接数据框?