How Can I Select A Specific Column From Each Row In A Pandas Dataframe?
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 this, with column names: ['a', 'a', 'b',
Solution 1:
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.
Solution 2:
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.
Solution 3:
You can always use list comprehension:
[df.loc[idx, col] for idx, col in enumerate(['a', 'a', 'b', 'c', 'b'])]
Post a Comment for "How Can I Select A Specific Column From Each Row In A Pandas Dataframe?"