Select specific index, column pairs from pandas dataframe

I think get_value() and lookup() is faster:

import numpy as np
import pandas as pd
x = pd.DataFrame(np.random.randn(3,3), index=[1,2,3], columns=['A', 'B', 'C'])

locations = [(1, "A"), (1, "B"), (1, "A"), (3, "C")]

print x.get_value(1, "A")

row_labels, col_labels = zip(*locations)
print x.lookup(row_labels, col_labels)

If your pairs are positions instead of index/column names,

row_position = [0,0,0,2]
col_position = [0,1,0,2]

x.values[row_position, col_position]

Or get the position from np.searchsorted

row_position = np.searchsorted(x.index,row_labels,sorter = np.argsort(x.index))

Tags:

Python

Pandas