Почему набор данных pramas возвращает имена столбцов данных? - PullRequest
0 голосов
/ 11 октября 2018

Я просто возился и нашел это забавным:

>>> import pandas as pd
>>> df = pd.DataFrame({'col1': [1, 2], 'col2': [3, 4]})
>>> x = set(df)
>>> x
{'col2', 'col1'}

Почему панды возвращают имена столбцов как заданные значения?

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

Вы можете найти реализацию для __iter__ в родительском классе DataFrame NDFrame:

def __iter__(self):
    """Iterate over infor axis"""
    return iter(self._info_axis)

По сути, это то же самое, что вызов keys дляDataFrame, определенный в том же месте.Я включил это здесь, потому что строка документации более полезна и описывает различия в _info_axis между Series, DataFrame и Panel

def keys(self):
    """Get the 'info axis' (see Indexing for more)
    This is index for Series, columns for DataFrame and major_axis for
    Panel.
    """
    return self._info_axis
0 голосов
/ 11 октября 2018

Поскольку именно так __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значений, соответствующих уникальным меткам столбцов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...