Добавление количества к df, произведенному групповым сокращением

1

.size() ни .size() ни .count() не создают столбец с одним счетчиком при применении к данным, созданным .cut().

Это может быть только проблемой синтаксиса, но я попытался .size(), .count() и .describe() и получить несколько столбцов с количеством групп, но не один столбец.

#python 2.7
import pandas as pd
import numpy as np


np.random.seed(seed=1)
df = pd.DataFrame({"var1": np.random.random(100), 
                   "var2": np.random.random(100) + 5})

# Bin the data frame by "var1" with 10 bins...
df = df.groupby(pd.cut(df.var1, 10)).describe().var2[['mean','count']]
df =df.reset_index()
print df"

#Results:
                     var1      mean  count
0  (-0.000874, 0.099]  5.546257   11.0
1      (0.099, 0.198]  5.434613   12.0
2      (0.198, 0.297]  5.483686    9.0
3      (0.297, 0.396]  5.313241    6.0
4      (0.396, 0.494]  5.537168   13.0
5      (0.494, 0.593]  5.518476   10.0
6      (0.593, 0.692]  5.614630   10.0
7      (0.692, 0.791]  5.443415   10.0
8       (0.791, 0.89]  5.464804    7.0
9       (0.89, 0.989]  5.418756   12.0

# Обновлено опубликованный вопрос с кодом, который обеспечивает желаемый ответ.

  • 1
    Не уверен, что вам нужно
  • 0
    Я хочу добавить столбец «cnt» к df, который показывает количество элементов в каждом бине, которые использовались для вычисления среднего значения, показанного как «var2».
Теги:
pandas
pandas-groupby
count

1 ответ

2

Если это так, вам нужно transform с помощью pd.Series.groupby()

df['cnt']=df.groupby(pd.cut(df.var1, 10))['var2'].transform('count')

Ещё вопросы

Сообщество Overcoder
Наверх
Меню