首页 > 解决方案 > 使用来自其他数据框的索引和列的值创建数据框

问题描述

我有一个大数据框df1,如下所示:

    0     1     2

0   NaN   1     5
1   0.5   NaN   1
2   1.25  3     NaN

我想创建另一个df2包含三列的数据框,其中前两列的值对应于df1列和索引,第三列是单元格值。

所以df2看起来像:

   src   dst    cost 

0   0     1     0.5
1   0     2     1.25
2   1     0     5
3   1     2     3

我怎样才能做到这一点?

谢谢

标签: pythonpandas

解决方案


我敢肯定,可能有一种聪明的方法可以做到这一点,pd.pivot或者pd.melt但这是有效的:

df2 = (
    # reorganize the data to be row-wise with a multi-index
    df1.stack()
    # drop missing values
    .dropna()
    # name the axes
    .rename_axis(['src', 'dst'])
    # name the values
    .to_frame('cost')
    # return src and dst to columns
    .reset_index(drop=False)
)

推荐阅读