Поскольку именно так __iter__
определено в исходном коде для NDFrame
, из которых pd.DataFrame
является дочерним:
def __iter__(self):
"""Iterate over infor axis"""
return iter(self._info_axis)
pd.DataFrame._info_axis
используется внутри для хранения меток столбцов:
df = pd.DataFrame(columns=list('abcd'))
df._info_axis # Index(['a', 'b', 'c', 'd'], dtype='object')
set
повторяет экземпляр pd.DataFrame
через __iter__
, хэширует каждый элемент и возвращает set
значений, соответствующих уникальным меткам столбцов.