相关疑难解决方法(0)

使用pandas groupby计算唯一值

我有以下形式的数据:

df = pd.DataFrame({
    'group': [1, 1, 2, 3, 3, 3, 4],
    'param': ['a', 'a', 'b', np.nan, 'a', 'a', np.nan]
})
print(df)

#    group param
# 0      1     a
# 1      1     a
# 2      2     b
# 3      3   NaN
# 4      3     a
# 5      3     a
# 6      4   NaN
Run Code Online (Sandbox Code Playgroud)

组内的非空值始终相同.我想为每个组(它存在的位置)计算一次非空值,然后查找每个值的总计数.

我目前正在以下(笨重和低效)的方式做到这一点:

param = []
for _, group in df[df.param.notnull()].groupby('group'):
    param.append(group.param.unique()[0])
print(pd.DataFrame({'param': param}).param.value_counts())

# a    2
# b    1
Run Code Online (Sandbox Code Playgroud)

我确信有一种方法可以更干净地完成这项工作并且不使用循环,但我似乎无法解决这个问题.任何帮助将非常感激.

python group-by pandas

20
推荐指数
4
解决办法
4万
查看次数

熊猫,groupby和伯爵

我有一个像这样的数据框

>>> df = pd.DataFrame({'user_id':['a','a','s','s','s'],
                    'session':[4,5,4,5,5],
                    'revenue':[-1,0,1,2,1]})

>>> df
   revenue  session user_id
0       -1        4       a
1        0        5       a
2        1        4       s
3        2        5       s
4        1        5       s
Run Code Online (Sandbox Code Playgroud)

和会话和收入的每个值代表了一种类型的,我要统计每个种类的数量表示的数量revenue=-1session=4user_id=a为1.

我发现简单的调用count()函数,因为groupby()无法输出我想要的结果.

>>> df.groupby('user_id').count()
         revenue  session
user_id
a              2        2
s              3        3
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

python pandas pandas-groupby

7
推荐指数
3
解决办法
2万
查看次数

标签 统计

pandas ×2

python ×2

group-by ×1

pandas-groupby ×1