拆分字母数字列,不包含定界符熊猫数据框

时间:2019-10-26 12:48:17

标签: python pandas

我在pandas数据框中有一个列,我需要将该列拆分成多个列,我面临的问题是该列的值没有定界符。这是数据框

import pandas as pd   
data =   ['MSFT220121C00180000','MSFT220121C00185000','MSFT220121C00200000'] 
df = pd.DataFrame(data, columns = ['contract']) 
df 

输出

    contract
0   MSFT220121C00180000
1   MSFT220121C00185000
2   MSFT220121C00200000

所需的输出

   ticker date  type series
0   MSFT 220121 C 00180000
1   MSFT 220121 C 00185000
2   MSFT 220121 C 00200000

我用正则表达式尝试过一些

r = re.compile("([a-zA-Z]+)([0-9]+)")
 ('MSFT', '220121')

没有给我想要的结果。

1 个答案:

答案 0 :(得分:1)

您可以将series.str.extractall()unstack()结合使用:

m=df.contract.str.extractall('([a-zA-Z]+)([0-9]+)').unstack().sort_index(level=1,axis=1)
m.columns=['ticker','date','type','series']
print(m)

或者:

import itertools
m=pd.DataFrame([[*itertools.chain.from_iterable(i)] 
               for i in df.contract.str.findall('([a-zA-Z]+)([0-9]+)')],
               columns=['ticker','date','type','series'])

  ticker    date type    series
0   MSFT  220121    C  00180000
1   MSFT  220121    C  00185000
2   MSFT  220121    C  00200000