【问题标题】:Dataframe melt and retain index数据框融化并保留索引
【发布时间】:2020-07-10 16:43:11
【问题描述】:

我有一个这样的数据框:

    df = pd.DataFrame(
        [
            ["True", "False"],
            ["True", "True"],
            ["False", "True"],

        ],
        index=["bob", "sue", "joe"],
        columns=["R1", "R2"],
    )

我想把df融化,以便使用索引名称,并将Trues替换为列名,所以输出是这样的:

    df = pd.DataFrame(
        [
            ["bob", "R1"],
            ["sue", "R1"],
            ["sue", "R2"],
            ["joe", "R2"],
        ],
        columns=["Names", "Role"],
    )

我怎样才能做到这一点?

【问题讨论】:

    标签: python-3.x pandas dataframe replace melt


    【解决方案1】:

    使用DataFrame.melt 并首先将索引转换为列:

    df = df.rename_axis('Names').reset_index().melt('Names', var_name='Role')
    

    然后按True值过滤:

    df = df.loc[df['value'].map({'True':True, 'False':False}), ['Names','Role']]
    

    或者:

    df = df.loc[df['value'] == 'True', ['Names','Role']]
    

    print(df)  
      Names Role
    0   bob   R1
    1   sue   R1
    4   sue   R2
    5   joe   R2
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-11
      • 1970-01-01
      • 2018-11-04
      • 2014-09-01
      • 2020-07-17
      • 2013-12-03
      相关资源
      最近更新 更多