pandas数据合并

import pymysql
import pandas as pd

host=''
port=4000
user=''
password='111111'
db=''

db= pymysql.connect(host=host,
                             port=port,
                             user=user,
                             password=password,
                             db=db,
                             charset='utf8',
                            )

sql="""select cid,sum from `biao`"""
d = pd.read_sql(sql, con=db)
# print(d)
'''
       cid   sum
0     8985     0
1     7523     0
2     7136     0
3     7616     0
4     7522     0
5     7152     0
6     7524     0
7     7523     0
8     7153     0
9     7135     0
10    7137     0
11    7138     0
12    7522     0
13    7522     0
14    9299     0
15    7616     0
16    7160     0
17    7152     0
18    7524     0
19    7616     0
20    7155     0
21    7616     0
22    7136     0
23    7135     0
24    7522     0
25    7417     0
26    7415     0
27    7616     0
28    7522     0
29    7522     0
...    ...   ...
1850  9232  0.10
1851  9232  0.10
1852  9232  0.10
1853  9211  0.10
1854  9232  0.10
1855  9232  0.10
1856  7417     0
1857  7415     0
1858  7148     0
1859  7150     0
1860  7145     0
1861  7151     0
1862  7147     0
1863  7143     0
1864  7138     0
1865  9232  0.10
1866  7364  1.00
1867  9232  0.10
1868  9211  0.10
1869  9232  0.10
1870  9232  0.10
1871  9428  0.10
1872  9232  0.10
1873  9428  0.10
1874  9232  0.10
1875  7417     0
1876  7435  1.00
1877  7364  1.00
1878  9209  0.01
1879  9211  0.10

[1880 rows x 2 columns]'''
db.close()
d=d.astype({'sum':float})
# d.sort_values('cid')
df=d.groupby('cid',as_index=False).count().rename({'sum':'count'},axis=1)
df1=d.groupby('cid',as_index=False).sum().sort_values('sum',ascending=False)
df2=df.merge(df1,on=['cid']).sort_values('sum',ascending=False)
print(df2)
'''     cid  count       sum
60  9139     23  10287.00
68  9361      1   2280.00
67  9360      7   1893.00
64  9232    354    254.50
62  9211    102    226.00
69  9428    141     70.80
41  8541      3     57.00
61  9209     61     37.51
43  8728      1     29.00
42  8726      1     29.00
28  7364     27     27.00
39  8074      3     27.00
31  7435      9      9.00
40  8382      6      6.00
33  7455      3      3.00
34  7456      2      2.00
32  7453      1      1.00
63  9213      1      0.10
58  9016      5      0.00
45  8985     56      0.00
66  9300     17      0.00
65  9299     20      0.00
59  9017      5      0.00
44  8984      9      0.00
46  8986      8      0.00
57  9015      5      0.00
47  8987      5      0.00
48  8988      7      0.00
49  8989      6      0.00
50  8990     14      0.00
..   ...    ...       ...
2   7128     13      0.00
3   7129     16      0.00
4   7133     18      0.00
5   7134     18      0.00
6   7135     54      0.00
7   7136     82      0.00
8   7137     17      0.00
9   7138     20      0.00
10  7139     12      0.00
11  7141     15      0.00
12  7142     13      0.00
13  7143     23      0.00
14  7144     37      0.00
15  7145     14      0.00
16  7146     12      0.00
17  7147     12      0.00
18  7148     34      0.00
19  7150     35      0.00
20  7151     11      0.00
21  7152     29      0.00
22  7153     13      0.00
23  7154     17      0.00
24  7155     17      0.00
25  7156     26      0.00
26  7160     29      0.00
27  7344     51      0.00
29  7415     43      0.00
30  7417     54      0.00
1   7127     17      0.00
35  7522     36      0.00'''
df3=pd.merge(df,df1,how='left',on='cid').sort_values('sum',ascending=False)
# print(df3)
'''
     cid  count       sum
60  9139     23  10287.00
68  9361      1   2280.00
67  9360      7   1893.00
64  9232    354    254.50
62  9211    102    226.00
69  9428    141     70.80
41  8541      3     57.00
61  9209     61     37.51
43  8728      1     29.00
42  8726      1     29.00
28  7364     27     27.00
39  8074      3     27.00
31  7435      9      9.00
40  8382      6      6.00
33  7455      3      3.00
34  7456      2      2.00
32  7453      1      1.00
63  9213      1      0.10
58  9016      5      0.00
45  8985     56      0.00
66  9300     17      0.00
65  9299     20      0.00
59  9017      5      0.00
44  8984      9      0.00
46  8986      8      0.00
57  9015      5      0.00
47  8987      5      0.00
48  8988      7      0.00
49  8989      6      0.00
50  8990     14      0.00
..   ...    ...       ...
2   7128     13      0.00
3   7129     16      0.00
4   7133     18      0.00
5   7134     18      0.00
6   7135     54      0.00
7   7136     82      0.00
8   7137     17      0.00
9   7138     20      0.00
10  7139     12      0.00
11  7141     15      0.00
12  7142     13      0.00
13  7143     23      0.00
14  7144     37      0.00
15  7145     14      0.00
16  7146     12      0.00
17  7147     12      0.00
18  7148     34      0.00
19  7150     35      0.00
20  7151     11      0.00
21  7152     29      0.00
22  7153     13      0.00
23  7154     17      0.00
24  7155     17      0.00
25  7156     26      0.00
26  7160     29      0.00
27  7344     51      0.00
29  7415     43      0.00
30  7417     54      0.00
1   7127     17      0.00
35  7522     36      0.00'''
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值