【问题标题】:Merge first two of a dataframe and create new header合并数据帧的前两个并创建新标头
【发布时间】:2021-08-16 02:19:30
【问题描述】:

我有一个数据框

df = pd.DataFrame({ 
    'Col1': ['abc', 'qrt', 130, 200, 190, 210], 
    'Col2': ['xyz','tuv', 130, 200, 190, 210],
    'Col3': ['pqr', 'set', 130, 200, 190, 210],})

我希望获取数据框的前两行,将它们合并并用连字符分隔并将它们转换为新的标题。我试过了

df.columns = np.concatenate(df.iloc[0], df.iloc[1])
df.columns = new_header

但这似乎不起作用。输出应该是这样的

df = pd.DataFrame({ 
    'abc_qrt': [ 130, 200, 190, 210], 
    'xyz_tuv': [130, 200, 190, 210],
    'pqr_set': [ 130, 200, 190, 210],})

【问题讨论】:

    标签: pandas merge concatenation


    【解决方案1】:

    试试

    df = df.T.set_index([0,1]).T
    df.columns = df.columns.map('_'.join)
    df
    Out[308]: 
      abc_qrt xyz_tuv pqr_set
    2     130     130     130
    3     200     200     200
    4     190     190     190
    5     210     210     210
    

    【讨论】:

      【解决方案2】:

      你可以取前两行,用_ 连接它们,然后用它设置其余的列:

      df.iloc[2:].set_axis(df.iloc[:2].agg("_".join), axis=1)
      

      得到

        abc_qrt xyz_tuv pqr_set
      2     130     130     130
      3     200     200     200
      4     190     190     190
      5     210     210     210
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-07-10
        • 2021-11-15
        • 2014-04-14
        • 1970-01-01
        • 2012-07-23
        • 2019-11-29
        • 2017-12-17
        • 1970-01-01
        相关资源
        最近更新 更多