In the simple code below, I'd like to understand how pd.DataFrame decides if the column is present in the DataFrame. How can I make all 3 print statements return the data [1,2,3]?
class ColumnName:
def __init__(self, name):
self.name = name
def __repr__(self):
return self.name
def __str__(self):
return self.name
def __hash__(self):
return hash(self.name)
label1 = ColumnName('foo')
label2 = ColumnName('foo')
import pandas as pd
df = pd.DataFrame({
label1: [1,2,3]
})
print(df[label1]) # OK
print(df[label2]) # KeyError
print(df[ColumnName('foo')]) # KeyError