使用日期展平多索引列

问题描述 投票:0回答:1

我有一个多索引列数据框,也有日期。我希望列成为行。

例如:

|一个 |一个 |乙| B|

| X |是 | X |是 |日期 |


| 1 | 2 | 3 | 4 | 08 年 5 月 |

我需要它

|开始|结束 |价值|日期 |


|一个 | X | 1 | 08 年 5 月 |

|一个 |是 | 2 | 08 年 5 月 |

等等

抱歉格式不正确。当我尝试添加代码时,提交表单被吓坏了,我不知道如何使其工作。

如果您有任何问题请告诉我,我会尽力解答

python pandas dataframe multi-index
1个回答
0
投票

假设这个输入:

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'}) )

© www.soinside.com 2019 - 2024. All rights reserved.