【问题标题】:How to stack several column into one column but keep a column as it is in python如何将几列堆叠成一列但在python中保持一列
【发布时间】:2021-12-07 08:44:48
【问题描述】:

假设我有这个数据框

A B C
1 p q
1 q
2 p
2 p q

我想将 B 列和 C 列堆叠成一列(比如说 D 列),但保持 A 列不变。如何得到这个? 这是我想要的预期输出

A D
1 p
1 q
1 q
2 p
2 p
2 q

注意:据我所知,要将 B 列和 C 列堆叠到 D 列中,我可以使用以下代码:

df_temp = df[['B','C']]

df_temp = df_temp.stack().reset_index(name='D')

【问题讨论】:

    标签: python pandas dataframe stack


    【解决方案1】:

    DataFrame.set_indexA 列一起使用:

    df_temp = (df.set_index('A')[['B','C']]
                  .stack()
                  .reset_index(level=1, drop=True)
                  .reset_index(name='D'))
    print (df_temp)
       A  D
    0  1  p
    1  1  q
    2  1  q
    3  2  p
    4  2  p
    5  2  q
    

    或者:

    df_temp = (df.melt(id_vars='A',value_vars=['B','C'], value_name='D')
                 .drop('variable', axis=1)
                 .dropna(subset=['D'])
                 .sort_values('A', ignore_index=False))
    print (df_temp)
       A  D
    0  1  p
    4  1  q
    5  1  q
    2  2  p
    3  2  p
    7  2  q
    

    【讨论】:

      猜你喜欢
      • 2020-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-17
      • 2012-11-15
      • 2021-12-14
      • 1970-01-01
      • 2021-10-22
      相关资源
      最近更新 更多