How can I select a specific column from each row in a Pandas DataFrame?

前端 未结 3 1402
走了就别回头了
走了就别回头了 2021-01-11 12:25

I have a DataFrame in this format:

    a   b   c
0   1   2   3
1   4   5   6
2   7   8   9
3   10  11  12
4   13  14  15

and an array like

相关标签:
3条回答
  • 2021-01-11 12:36

    You could use lookup, e.g.

    >>> i = pd.Series(['a', 'a', 'b', 'c', 'b'])
    >>> df.lookup(i.index, i.values)
    array([ 1,  4,  8, 12, 14])
    

    where i.index could be different from range(len(i)) if you wanted.

    0 讨论(0)
  • 2021-01-11 12:43

    You can always use list comprehension:

    [df.loc[idx, col] for idx, col in enumerate(['a', 'a', 'b', 'c', 'b'])]
    
    0 讨论(0)
  • 2021-01-11 12:44

    For large datasets, you can use indexing on the base numpy data, if you're prepared to transform your column names into a numerical index (simple in this case):

    df.values[arange(5),[0,0,1,2,1]]
    
    out: array([ 1,  4,  8, 12, 14])
    

    This will be much more efficient that list comprehensions, or other explicit iterations.

    0 讨论(0)
提交回复
热议问题