【发布时间】:2020-11-15 03:17:30
【问题描述】:
| | Var1 Var2
|------------|------|------|-----|------|------|-----|
| | SPY | AAPL | MSFT| SPY | AAPL | MSFT
| Date | | | | | | |
| 2011-01-03 | 30 | 30 | 30 | 30 | 30 | 30 |
| 2011-01-04 | 30 | 30 | 30 | 21 | 30 | 30 |
| 2011-01-05 | 30 | 30 | 30 | 30 | 30 | 30 |
如何将上面的具有多层的数据框转换为如下所示的长格式? 预期输出如下所示:
| | firm | Var1 | Var2 |
|------------|------|------|------|
| Date | | | |
| 2011-01-03 | AAPL | 30 | 30 |
| 2011-01-04 | SPY | 30 | 30 |
| 2011-01-05 | MSFT | 30 | 30 |
样本数据:
df = pd.DataFrame([{('Var1', 'SPY'): 30.0,
('Var1', 'AAPL'): 30.0,
('Var1', 'MSFT'): 30.0,
('Var2', 'SPY'): 30.0,
('Var2', 'AAPL'): 30.0,
('Var2', 'MSFT'): 30.0},
{('Var1', 'SPY'): 30.0,
('Var1', 'AAPL'): 30.0,
('Var1', 'MSFT'): 30.0,
('Var2', 'SPY'): 21.0,
('Var2', 'AAPL'): 30.0,
('Var2', 'MSFT'): 30.0},
{('Var1', 'SPY'): 30.0,
('Var1', 'AAPL'): 30.0,
('Var1', 'MSFT'): 30.0,
('Var2', 'SPY'): 30.0,
('Var2', 'AAPL'): 30.0,
('Var2', 'MSFT'): 30.0}]
【问题讨论】:
-
您是从数据透视表开始的吗?
-
数据框自带多层。
-
df.stack()??我没有正确回答这个问题。你的输入和预期输出对我来说并不完全清楚。 -
为什么输出中只有三个元素(行)?
-
对不起,只是为了表达想法,应该更是的
标签: python python-3.x pandas dataframe pivot-table