【问题标题】:Concatenate 1st Column values with column headers in Pandas to get a tall and skinny format tabel将第一列值与 Pandas 中的列标题连接起来,得到一个又高又瘦的格式表
【发布时间】:2021-03-12 22:33:19
【问题描述】:

我想将第一列值与列标题连接起来,以使用 pandas 获得一个又高又瘦的格式表。 例如 - 输入是

Freq    Low     High
 B1     19       22
 B2     20       23 

我正在寻找的预期输出是

Freq      value     
B1_Low     19
B1_High    22
B2_Low     20
B2_High    23

【问题讨论】:

    标签: python pandas dataframe numpy combinations


    【解决方案1】:

    您可以使用melt,然后连接产生的频率和变量列。

    df = df.melt(id_vars='Freq')
    df['Freq'] = df['Freq'].str.cat(df['variable'], sep='_')
    print(df[['Freq','value']])
    

    输出

          Freq  value
    0   B1_Low     19
    1   B2_Low     20
    2  B1_High     22
    3  B2_High     23
    

    【讨论】:

      【解决方案2】:

      您可以在索引上使用.stack(),然后使用.get_level_values()

      df = df.set_index('Freq').T.stack()
      df = pd.DataFrame({'value':df.values}, index=(df.index.get_level_values(1) + '_' + df.index.get_level_values(0)) )
      print(df)
      

      打印:

               value
      B1_Low      19
      B2_Low      20
      B1_High     22
      B2_High     23
      

      【讨论】:

        猜你喜欢
        • 2023-02-08
        • 1970-01-01
        • 2012-02-18
        • 1970-01-01
        • 2019-05-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-07
        相关资源
        最近更新 更多