0

我需要使用 melt 函数(pandas)将我的数据表转换为一维格式,但我有两行的列,根据我的研究,我必须使用多索引将这些行定义为列。

例如:

df.columns = pd.MultiIndex.from_arrays(
        df.iloc[:2].apply(list, 1))
df = df.iloc[2:].reset_index(drop=True)

在此之后,当我应用融化功能时:

        df = df.melt(id_vars=df.columns[[0,1]],
                 var_name='columns', value_name='Value')

我收到此错误: ValueError("Can only tuple-index with a MultiIndex") ValueError: Can only tuple-index with a MultiIndex

我拥有的数据格式:

    A B C
    D E F 
X Y 1 2 3
Z T 4 5 6

我需要达到的数据格式:

X Y A D 1
X Y B E 2
X Y C F 3
Z T A D 4
Z T B E 5
Z T C F 6

我对python不是很有经验,所以如果你能帮助我,我会很高兴。提前致谢

4

1 回答 1

0

用于使用DataFrame.rename_axisreshape by 设置新列名DataFrame.stack,最后转换MultiIndex SeriesDataFrameby Series.reset_index

df1 = df.rename_axis(['a','b'], axis=1).stack(level=[0,1]).reset_index(name='c')

InDataFrame.melt可能只使用一个级别,而不是两者:

df2 = df.melt(col_level=0, ignore_index=False)
df3 = df.melt(col_level=1, ignore_index=False)
#failed
df4 = df.melt(col_level=[0,1], ignore_index=False)
于 2020-11-04T12:37:44.843 回答