为了账号安全,请及时绑定邮箱和手机立即绑定

对应的熊猫数(不同)

对应的熊猫数(不同)

交互式爱情 2019-11-22 15:23:30
我使用pandas作为数据库替代品,因为我有多个数据库(oracle,mssql等),并且无法对SQL等效命令进行一系列命令。我在DataFrame中加载了一个带有一些列的表:YEARMONTH, CLIENTCODE, SIZE, .... etc etc在SQL中,每年计算不同客户端的数量将是:SELECT count(distinct CLIENTCODE) FROM table GROUP BY YEARMONTH;结果将是201301    5000201302    13245如何在熊猫中做到这一点?
查看完整描述

3 回答

?
阿晨1998

TA贡献2037条经验 获得超6个赞

我相信这就是您想要的:


table.groupby('YEARMONTH').CLIENTCODE.nunique()

例:


In [2]: table

Out[2]: 

   CLIENTCODE  YEARMONTH

0           1     201301

1           1     201301

2           2     201301

3           1     201302

4           2     201302

5           2     201302

6           3     201302


In [3]: table.groupby('YEARMONTH').CLIENTCODE.nunique()

Out[3]: 

YEARMONTH

201301       2

201302       3


查看完整回答
反对 回复 2019-11-22
?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

这是另一种方法,非常简单,可以说您的数据框名称为daat,列名称为YEARMONTH


daat.YEARMONTH.value_counts()


查看完整回答
反对 回复 2019-11-22
?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

使用crosstab,这将返回比groupby nunique


pd.crosstab(df.YEARMONTH,df.CLIENTCODE)

Out[196]: 

CLIENTCODE  1  2  3

YEARMONTH          

201301      2  1  0

201302      1  2  1

稍作修改后,产生结果


pd.crosstab(df.YEARMONTH,df.CLIENTCODE).ne(0).sum(1)

Out[197]: 

YEARMONTH

201301    2

201302    3

dtype: int64


查看完整回答
反对 回复 2019-11-22
  • 3 回答
  • 0 关注
  • 442 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信