Pra*_*vat 2 python list-comprehension dataframe python-3.x pandas
我有数据帧,如:
Instru,Name
16834306,INFOSYS18SEP640.50PE
16834306,INFOSYS18SEP640.50PE
16834306,BHEL18SEP52.80CE
16834306,BHEL18SEP52.80CE
16834306,IOCL18SEP640PE
16834306,IOCL18SEP640PE
我想通过从Name Column获取字符串来创建单独的列,如下所示:
Instru,Name,Symbol,Month,SP,Type
16834306,INFOSYS18SEP640.50PE,INFOSYS,18SEP,640.50,PE
16834306,INFOSYS18SEP640.50PE,INFOSYS,18SEP,640.50,PE
16834306,BHEL18SEP52.80CE,BHEL,18SEP,52.80,CE    
16834306,BHEL18SEP52.80CE,BHEL,18SEP,52.80,CE
16834306,IOCL18SEP640PE,IOCL,18SEP,640,PE
16834306,IOCL18SEP640PE,IOCL,18SEP,640,PE
注意:十进制显示为十进制,int为int列为int
pandas.Series.str.extract在正则表达式模式中使用命名组
pat = '(?P<Symbol>.*?)(?P<Month>\d{1,2}\w{3})(?P<SP>[\d\.]+)(?P<Type>.*)'
df.join(df.Name.str.extract(pat))
     Instru                  Name   Symbol  Month      SP Type
0  16834306  INFOSYS18SEP640.50PE  INFOSYS  18SEP  640.50   PE
1  16834306  INFOSYS18SEP640.50PE  INFOSYS  18SEP  640.50   PE
2  16834306      BHEL18SEP52.80CE     BHEL  18SEP   52.80   CE
3  16834306      BHEL18SEP52.80CE     BHEL  18SEP   52.80   CE
4  16834306        IOCL18SEP640PE     IOCL  18SEP     640   PE
5  16834306        IOCL18SEP640PE     IOCL  18SEP     640   PE
正则表达式是一个有趣的模糊业务,是一种艺术形式.我会解释我做了什么以及为什么.你可以比较一下我对@jonclements所做的事情,看看我们都用相同的方法攻击了问题,但做出了微妙的不同假设.
'(?P<group_name>pattern)' 是一种创建捕获组并使用它命名的方法 'group_name''(?P<Symbol>.*?)'抓住所有角色到下一个捕获组,'?'说不要贪心.'(?P<Month>\d{1,2}\w{3})'抓住1或2位数字然后3个字母.1或2位数的模糊性是我使前一组非贪婪的原因.'(?P<SP>[\d\.]+)'抓住一个或多个数字或句点.不可否认,这并不是非常优雅,因为它可以抓住,'4.2.4.5'但它应该完成工作.'(?P<Type>.*)' 打扫卫生并抓住剩下的部分.| 归档时间: | 
 | 
| 查看次数: | 58 次 | 
| 最近记录: |