找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 2500|回复: 3

[求助] pandas对字符串中的部分字符分组求个数

1

主题

3

帖子

3

积分

贫民

积分
3
lhqmccn 发表于 2018-1-3 10:41:44 | 显示全部楼层 |阅读模式



python版本:Python 3.6.2


selection.csv 的内容如下(附件):
DRAW_ID,   SELECTION
256646,    2+2+x+[31]3$[34]1
256646,   1+1+x+[31]1
256646,   2+2+x+[1]1+3$[6]1+3
256646,   4+4+x+[31]1$[33]1$[34]1$[38]1
256646,   2+2+x+[1]3$[2]3
256646,   2+2+x+[1]1+3$[2]1+2
256646,   2+2+x+[1]2+3$[2]1+2
256646,   10+10+9+8+7+x+[1]3$[3]3$[4]2$[14]1$[16]2$[75]3$[82]3$[92]3$[108]3$[111]3
256646,   2+2+x+[1]3$[2]3
256646,   2+2+x+[3]1$[10]3


按selection字段下,红色字体部分分组,求draw_id的个数。


想要到结果如下:
1+1+x                     1
10+10+9+8+7+x    1
2+2+x                      7
4+4+x                      1


我的代码如下:求高手指点,应该怎么做,才可以得出想要的结果
# -*- coding: utf-8 -*-
import pandas as pd
path2=r'.\selection.csv'
data=pd.read_csv(path2,encoding='utf-8')
p=data.SELECTION.str.findall('\d.*?x') #每行得到的是list
print(type(p))#类型是Series
data1=pd.DataFrame()
data1['SELECTION']=p
data1['DRAW_ID'] =data['DRAW_ID']
print(type(data1['SELECTION'][0])) #类型是list
print(type(data1['DRAW_ID'][0]))#类型是numpy.int64
print(data1.groupby(['SELECTION']).count())#报错,不能将list分组。



selection.csv

340 Bytes, 下载次数: 1

回复

使用道具 举报

0

主题

956

帖子

956

积分

圣骑士

积分
956
sheeboard 发表于 2018-1-3 13:27:52 | 显示全部楼层
加一列辅助列,对辅助列分组

ref

ref
回复 支持 反对

使用道具 举报

1

主题

3

帖子

3

积分

贫民

积分
3
lhqmccn  楼主| 发表于 2018-1-3 16:23:56 | 显示全部楼层
sheeboard 发表于 2018-1-3 13:27
加一列辅助列,对辅助列分组

谢谢,代码还有吗,麻烦给贴下
回复 支持 反对

使用道具 举报

1

主题

3

帖子

3

积分

贫民

积分
3
lhqmccn  楼主| 发表于 2018-1-3 17:25:59 | 显示全部楼层
sheeboard 发表于 2018-1-3 13:27
加一列辅助列,对辅助列分组

谢谢,不用了,搞定了
回复 支持 反对

使用道具 举报

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

本版积分规则

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