python - 使用 stack/unstack 或 groupby 在 python (pandas) 上将长数据帧转换为宽数据帧
问题描述
我有一个长数据框,看起来像这样,有两个标题,第一个带有变量,第二个带有宽格式的日期。
公司 | 价格 | 体积 | |
---|---|---|---|
日期 | |||
2011 年 1 月 1 日 | 特斯拉 | 2 | 1 |
2011 年 1 月 2 日 | 特斯拉 | 2 | 1 |
2011 年 1 月 1 日 | 微软 | 2 | 1 |
2011 年 1 月 2 日 | 微软 | 2 | 1 |
我想将其转换为长格式:
价格 | 体积 | |||
---|---|---|---|---|
日期 | 特斯拉 | 微软 | 特斯拉 | 微软 |
2011 年 1 月 1 日 | 2 | 2 | 1 | 1 |
2011 年 1 月 2 日 | 2 | 2 | 1 | 1 |
如果可能的话,我想使用堆栈或 unstack/groupby 来执行此操作。假设我将长数据框保存为 df - 我将如何将其转换为名为 Wide 的 pandas 数据框?
解决方案
这是set_index
添加为 MultiIndex 的第二级,然后append=True
添加到列中:company
unstack
company
df = df.set_index('company', append=True).unstack(level='company')
df
:
price volume
company MSFT TSLA MSFT TSLA
date
1/1/11 2 2 1 1
1/2/11 2 2 1 1
数据框:
df = pd.DataFrame({'company': {'1/1/11': 'MSFT', '1/2/11': 'MSFT'},
'price': {'1/1/11': 2, '1/2/11': 2},
'volume': {'1/1/11': 1, '1/2/11': 1}})
推荐阅读
- android-gradle-plugin - 将 play-services-auth 从 15.0.0 升级到 16.0.1 时出现奇怪的错误
- json - Haskell sqlite3 json
- javascript - 如何从多个模板访问 $scope 对象?
- julia - 滚动阵列,均匀圆周移位
- angularjs - Angualrjs- 从一个控制器重定向到另一个
- ms-access - Access中的多个嵌套iif语句
- r - 在R中将“-”转换为“0”
- docker - 将数据库和应用程序放在同一个 Kubernetes pod 中的好处
- angular - 当我使用 VScode + angular + git + protractor 时,意外的文件被保存
- java - Java alexa lambda函数在时间/操作上有一些限制吗?