|
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分组。
|
|