как получить последний столбец серии панд - PullRequest
1 голос
/ 06 апреля 2019

Я пытаюсь посчитать частоты массива. Я прочитал эту запись , я использую DataFrame и получаю серию.

>>> a = np.array([1, 1, 5, 0, 1, 2, 2, 0, 1, 4])
>>> df = pd.DataFrame(a, columns=['a'])
>>> b = df.groupby('a').size()
>>> b
a
0    2
1    4
2    2
4    1
5    1
dtype: int64
>>> b.iloc[:,-1]

когда я пытаюсь получить последний столбец, я получаю эту ошибку.

Traceback (most recent call last):   File "<stdin>", line 1, in <module>   File "/Users/pan/anaconda3/lib/python3.6/site-packages/pandas/core/indexing.py", line 1472, in __getitem__
    return self._getitem_tuple(key)   File "/Users/pan/anaconda3/lib/python3.6/site-packages/pandas/core/indexing.py", line 2013, in _getitem_tuple
    self._has_valid_tuple(tup)   File "/Users/pan/anaconda3/lib/python3.6/site-packages/pandas/core/indexing.py", line 220, in _has_valid_tuple
    raise IndexingError('Too many indexers') pandas.core.indexing.IndexingError: Too many indexers

как получить последний столбец b?

Ответы [ 2 ]

3 голосов
/ 06 апреля 2019

Так как pandas.Series является

Одномерный ndarray с метками оси

Если вы хотите получить только столбец частот, то есть значения ваша серия, используйте:

b.tolist()

или, альтернативно:

b.to_dict()

для сохранения меток и частот.

P.S:

Для вашей конкретной задачи рассмотрите также пакет collections:

>>> from collections import Counter
>>> a = [1, 1, 5, 0, 1, 2, 2, 0, 1, 4]
>>> c = Counter(a)
>>> list(c.values())
[2, 4, 2, 1, 1]
2 голосов
/ 06 апреля 2019

Проблема в том, что GroupBy.size равно Series, а Series не имеет столбцов, поэтому возможно получить только последнее значение:

b.iloc[-1]

Если использовать:

b.iloc[:,-1]

возвращает последний столбец в Dataframe.

Здесь : означает все строки и -1 во второй позиции последнего столбца.

Так что, если создать DataFrame из Series:

b1 = df.groupby('a').size().reset_index(name='count')

работает как ожидалось.

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