Как перебрать numpy.ndarray, который состоит из объектов? Также применять различные функции на них - PullRequest
0 голосов
/ 09 ноября 2018

у меня есть датафрейм из 100000+ строк в котором у меня есть имя столбца типа которые как уникальные значения, такие как: ['healer' 'terminator' 'kill-la-kill' 'demonic' 'healer-fpp' 'terminator-fpp' 'kill-la-kill-fpp' 'demonic-fpp']

То, что я хочу, это подсчитать количество каждого типа в кадре данных. Что я делаю сейчас, чтобы посчитать строку: len(df.loc[df['type'] == "healer"])

Но в этом случае мне приходится писать вручную столько раз, сколько в этом столбце уникальных значений. Есть ли какой-нибудь другой более простой способ сделать это? Также я хочу использовать это условие для фильтрации других столбцов, а также как the 'terminator' killed 78 in the 'kills' and had '0' heals

Ответы [ 3 ]

0 голосов
/ 09 ноября 2018

Numpy - это замечательно, и обычно у него уже есть одна строка, которая удовлетворяет большинству требований, подобных этому - я думаю, что вы, возможно, захотите ...

np.unique(yourArray,  return_counts=True)

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

попробовать:

import numpy as np
np.unique(df['type'].values, return_counts=True)

Или, сверните его в диктовке, чтобы вы могли извлечь значения, набранные по значению:

count_dict = dict(zip(*np.unique(df['type'].values, return_counts=True)))
count_dict["healer"]

>> 132

Затем вы можете вставить это в строку формата и (при условии, что вы создаете похожий словарь с именем heals_dict) сделать что-то вроде:

for k in count_dict.keys():
    print ( "the {k} killed {kills} in the 'kills' and had {heals} heals".format(k=k, kills=count_dict[k], heals=heals_dict[k]) )
0 голосов
/ 09 ноября 2018

использовать значение_счета?

df['type'].value_counts()
0 голосов
/ 09 ноября 2018

Вы можете перебирать уникальные значения напрямую, используя df["type"].unique()

for val in df["type"].unique():
    print(val, len(df[df["type"] == val]))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...