2017-08-10 41 views
4
  1. 我有一个数据帧:如何获得在列,其名称在另一列在python保持的数据

    import pandas as pd 
    data = {'Alpha': [1, 2, 3, 4, 5], 'Beta':[6, 7 ,8, 9, 10], 
    'Delta': [11, 12, 13, 14, 15], 'Gamma': [16, 17, 18, 19, 20]} 
    df = pd.DataFrame(data, index = ['2010', '2011', '2012', '2013', '2014']) 
    df 
    

enter image description here

  • 它还有一个'选择'栏,保存其他列名

    df['Select'] = ['Beta', 'Gamma', 'Gamma', 'Delta', 'Alpha'] 
    df 
    
  • enter image description here

  • 我需要添加的列,说的“选择”,其中,数据将从,其名称在被保持在列中导出“选择”列,例如下面:

    df['Choice'] = [0,0,0,0,0] 
    row = df['Select'].values 
    for i in range(len(row)): 
        df['Choice'][i] = df[row[i]][i] 
    df 
    
  • enter image description here

  • 我正在使用循环,但也许有一些更优雅的方式?谢谢!
  • 回答

    4

    我们可以使用DataFrame.lookup()

    In [49]: df['new'] = df.lookup(df.index, df.Select) 
    
    In [50]: df 
    Out[50]: 
         Alpha Beta Delta Gamma Select Choice new 
    2010  1  6  11  16 Beta  6 6 
    2011  2  7  12  17 Gamma  17 17 
    2012  3  8  13  18 Gamma  18 18 
    2013  4  9  14  19 Delta  14 14 
    2014  5 10  15  20 Alpha  5 5 
    
    +0

    太好,太快 –

    +0

    @MaxU谢谢你,它的工作原理! – Karifan

    相关问题