如何在列中获取数据,该名称保存在python的另一列中

时间:2017-08-10 11:05:15

标签: python pandas dataframe lookup

  1. 我有一个数据框:

    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
    
  2. enter image description here

    1. 它还有一列'选择',保留其他列名称

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

      1. 我需要添加一个列,例如“选择”,其中数据将从列中派生出来,其名称保存在'选择'专栏,如下:

        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
        
      2. enter image description here

        1. 我是用循环来做的,但也许有更优雅的方式?谢谢!

1 个答案:

答案 0 :(得分: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