【问题标题】:How do you stack two Pandas Dataframe columns on top of each other?如何将两个 Pandas Dataframe 列堆叠在一起?
【发布时间】:2015-02-15 07:27:27
【问题描述】:

是否有将两个 Pandas 数据框列堆叠在一起的库函数或正确方法?

例如将 4 列变成 2:

a1  b1  a2  b2
 1   2   3   4
 5   6   7   8

c   d
1   2
5   6
3   4
7   8

我阅读的大部分 Pandas 数据框文档仅涉及连接行和进行行操作,但我确信必须有一种方法来完成我所描述的操作,而且我确信它非常简单。

任何帮助都会很棒。

【问题讨论】:

    标签: python pandas dataframe data-analysis


    【解决方案1】:

    您可以使用pandas.DataFrame.iloc 选择前两列和后两列。然后,将两个部分的列名更改为cd。之后,您可以使用pandas.concat 加入他们。

    import pandas as pd
    import numpy as np
    
    df = pd.DataFrame(np.arange(1, 9).reshape((2, 4)),
            columns=["a1", "b1", "a2", "b2"])
    
    part1 = df.iloc[:,0:2]
    part2 = df.iloc[:,2:4]
    
    new_columns = ["c", "d"]
    part1.columns = new_columns
    part2.columns = new_columns
    
    print pd.concat([part1, part2], ignore_index=True)
    

    这给了你:

       c  d
    0  1  2
    1  5  6
    2  3  4
    3  7  8
    

    【讨论】:

      【解决方案2】:

      我会做以下事情

      import pandas as pd
      df = pd.DataFrame({'a1' : pd.Series([1,5]), 'b1' : pd.Series([2,6]), 'a2' : pd.Series([3,7]), 'b2' : pd.Series([4,8])})
      
      df1 = df[['a1','b1']]
      df2 = df[['a2','b2']]
      df1.columns = ['c','d']
      df2.columns = ['c','d']
      df1.append(df2)
      

      我刚刚看到@Carsten 也回答了这个问题,我也同意他的回答

      【讨论】:

        【解决方案3】:

        或者,使用melt

        # Make data as in previous answers 
        import pandas as pd
        import numpy as np
        
        df = pd.DataFrame(np.arange(1, 9).reshape((2, 4)),
                          columns=["a1", "b1", "a2", "b2"])
        
        # Melt both columns and concatenate 
        df = pd.concat([
            df[['a1', 'a2']].melt(value_name='c'), 
            df[['b1', 'b2']].melt(value_name='d')], 
            axis=1)
        
        # Discard unwanted columns melt creates
        df = df[['c', 'd']]
        

        【讨论】:

          猜你喜欢
          • 2012-10-16
          • 2018-06-19
          • 2022-12-21
          • 2016-03-26
          • 2022-01-03
          • 2014-11-25
          • 1970-01-01
          相关资源
          最近更新 更多