Pandas Расчет серии - PullRequest
       23

Pandas Расчет серии

0 голосов
/ 25 февраля 2020

Мой столбец (faq_helpful) имеет значения либо 0,1, либо пробелы. Если это пустое, я не буду беспокоиться об этом. Я хочу узнать, сколько 0 и 1, но, по-видимому, он возвращает одно и то же значение для обоих, что неверно.

for question, question_df in df_raw.groupby(['faq_question']): 
            count_0 = question_df['faq_helpful'].isin([0]).count()
            print(count_0)  # returns 25
            count_1 = question_df['faq_helpful'].isin([1]).count()
            print(count_1)   # also return 25 which is wrong
            total = count_0 + count_1

1 Ответ

0 голосов
/ 25 февраля 2020

Решение на основе вашего кода:

count = []
for question, question_df in df_raw.groupby(['faq_question']):
    count.append(len(question_df['faq_question']))
print(count)
[6, 9] # numbers based on my example 

total = sum(count)
print(total)
15

Pandas имеет встроенную функцию для подсчета значений в серии, pandas.Series.value_counts(), здесь . Эта функция отсортирует и посчитает все значения в Серии. Он возвращает серию с индексом, указывающим подсчитанное значение (в вашем случае 0 и 1) и в качестве его значения число его повторений.

k = df_raw['faq_question'].value_counts()

print(k)
1.0    9
0.0    6
Name: faq_question, dtype: int64

total = sum(k)

Пример кода, который использовался для генерации приведенного выше примера в том числе 0/1 / нан в соответствующем столбце:

df_raw = pd.DataFrame(np.array([
    [0,0,1,1,0,1,float("NaN"),0,1,1,1,1,0,0,float("NaN"),1,1],
    [9,4,float("NaN"),4,9,4,0,5,2,2,5,5,2,5,8,float("NaN"),1]]).T, 
    columns=["faq_question","other"])
...