首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >python熊猫:按几个列分组,并为一个列计算值

python熊猫:按几个列分组,并为一个列计算值
EN

Stack Overflow用户
提问于 2016-10-13 08:36:40
回答 1查看 638关注 0票数 3

我有df

代码语言:javascript
运行
复制
    orgs  feature1       feature2      feature3
0   org1        True        True         NaN
1   org1        NaN        True         NaN
2   org2        NaN        True         True 
3   org3        True        True       NaN
4   org4        True        True       True 
5   org4        True        True       True 

现在,我想数一数每个特性不同的orgs的数量。基本上是为了像这样拥有一个df_Result

代码语言:javascript
运行
复制
    features  count_distinct_orgs      
0   feature1        3        
1   feature2        4      
2   feature3        2        

有人知道怎么做吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-13 08:47:59

您可以将sum添加到以前的solution

代码语言:javascript
运行
复制
df1 = df.groupby('orgs')
        .apply(lambda x: x.iloc[:,1:].apply(lambda y: y.nunique())).sum().reset_index()
df1.columns = ['features','count_distinct_orgs']

print (df1)
   features  count_distinct_orgs
0  feature1                    3
1  feature2                    4
2  feature3                    2

aggregate Series.nunique的另一种解决方案

代码语言:javascript
运行
复制
df1 = df.groupby('orgs')
        .agg(lambda x: pd.Series.nunique(x))
        .sum()
        .astype(int)
        .reset_index()
df1.columns = ['features','count_distinct_orgs']
print (df1)
   features  count_distinct_orgs
0  feature1                    3
1  feature2                    4
2  feature3                    2

使用stack的解决方案可以工作,但返回警告:

C:\Anaconda3\lib\site-packages\pandas\core\groupby.py:2937: FutureWarning: numpy not_equal将来不会检查对象标识。比较没有返回标识(is)所建议的相同结果,并且会发生变化。公司= np.r_[1,val1:!= val:-1]

代码语言:javascript
运行
复制
df1 = df.set_index('orgs').stack(dropna=False)
df1 = df1.groupby(level=[0,1]).nunique().unstack().sum().reset_index()
df1.columns = ['features','count_distinct_orgs']
print (df1)
   features  count_distinct_orgs
0  feature1                    3
1  feature2                    4
2  feature3                    2
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40016097

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档