我有一个多索引列数据框,也有日期。我希望列成为行。
例如:
|一个 |一个 |乙| B|
| X |是 | X |是 |日期 |
| 1 | 2 | 3 | 4 | 08 年 5 月 |
我需要它
|开始|结束 |价值|日期 |
|一个 | X | 1 | 08 年 5 月 |
|一个 |是 | 2 | 08 年 5 月 |
等等
抱歉格式不正确。当我尝试添加代码时,提交表单被吓坏了,我不知道如何使其工作。
如果您有任何问题请告诉我,我会尽力解答
假设这个输入:
df = pd.DataFrame([[1,2,3,4,'May-08']],
columns=pd.MultiIndex.from_tuples([
('A', 'X'), ('A', 'Y'),
('B', 'X'), ('B', 'Y'),
(None, 'Date')
]))
# A B NaN
# X Y X Y Date
# 0 1 2 3 4 May-08
melt
对MultiIndex进行一些预处理以删除NaN/None(这不太好),并对结果索引进行后处理以删除元组:melt
输出:
df.columns = pd.MultiIndex.from_frame(df.columns.to_frame().fillna(''))
out = (df.melt([('', 'Date')], var_name=['Start', 'End'], value_name='Value')
.rename(columns={('', 'Date'): 'Date'})
)