找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 3984|回复: 5

[已回复] 数组问题

1

主题

3

帖子

3

积分

贫民

积分
3
落翎 发表于 2016-12-16 22:57:06 | 显示全部楼层 |阅读模式
9,1
9,2
6,1565
6,1570
3,1
3,2
7,7
7,356
7,381
8,1734

有个二维数组,如上,第一列为分组ID,第二列为值,现在想实现添加一列,计算与各组的最大值的差。比如第一行,组ID为9,对应的最大值为2,故第一行更新后为9, 1, 1
同理第二行为 9, 2, 0
回复

使用道具 举报

1

主题

3

帖子

3

积分

贫民

积分
3
落翎  楼主| 发表于 2016-12-16 22:58:59 | 显示全部楼层
尽量别用暴力的方法,当然用个二重循环,很容易搞定
回复 支持 反对

使用道具 举报

0

主题

27

帖子

27

积分

贫民

积分
27
maximal_ideal 发表于 2016-12-17 09:14:48 | 显示全部楼层
多键值排序不就好了??
回复 支持 反对

使用道具 举报

0

主题

20

帖子

20

积分

贫民

积分
20
zxy 发表于 2016-12-20 14:18:28 | 显示全部楼层
d = {}
for i in s.split('\n'):
        d.setdefault(i.split(',')[0],[]).append(i.split(',')[1])

for k,v in d.items():
        s = int(max(v))
        for i in v:
                print k+","+i+","+str(s-int(i))
回复 支持 反对

使用道具 举报

1

主题

3

帖子

3

积分

贫民

积分
3
落翎  楼主| 发表于 2016-12-20 18:09:31 | 显示全部楼层
二重循环是很容易搞定,不过我用的sql的方式搞定了
回复 支持 反对

使用道具 举报

0

主题

2

帖子

2

积分

贫民

积分
2
qqjue 发表于 2016-12-23 12:01:09 | 显示全部楼层

  1. import pandas as pd
  2. data=[[9,1       ],
  3. [9,2       ],
  4. [6,1565    ],
  5. [6,1570    ],
  6. [3,1       ],
  7. [3,2       ],
  8. [7,7       ],
  9. [7,356     ],
  10. [7,381     ],
  11. [8,1734    ]]
  12. df1 = pd.DataFrame(data)
  13. df3=df1.join(df1.groupby(0).max(),0,'inner','l','r')
  14. df3.columns=[0,1,2,3]
  15. df3[4]=(df3[3]-df3[2])
  16. print df3.iloc[:,[0,2,4]].values.tolist()
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表