如何使用切片并为3种不同场景选择中间字符



我有一个带有列日期包含不需要字符的数据框架,我只需要y,m,d。

方案1:HIS_205_26OCT2017

方案2:HIS_40_26OCT2017

方案3:HIS_3_26OCT2017

  ScenarioDate
    His_205_26Oct2017
    His_359_24Mar2017
    His_380_23Feb2017
    His_392_07Feb2017
    His_40_14Jun2018
    His_2_12Jul2018

我尝试使用以下代码

df2['ScenarioDate'].map(lambda x: str(x)[7:])

但是我有不同的输出

方案1:_26oct2017

方案2:26oct2017

方案3:2017年10月

我需要将所有3个方案的输出作为" 26oct2017"

import pandas as pd
df['new date'] = pd.to_datetime(df['ScenarioDate'].split('_')[-1])

使用Series.str.extract与模式使用_之后的匹配值,带有2个整数,3个字符,然后是4个整数:

df['date'] = df['ScenarioDate'].str.extract('_(d{2}[a-zA-Z]{3}d{4})')
print (df)
            ScenarioDate       date
0      His_205_26Oct2017  26Oct2017
1      His_359_24Mar2017  24Mar2017
2      His_380_23Feb2017  23Feb2017
3      His_392_07Feb2017  07Feb2017
4       His_40_14Jun2018  14Jun2018
5        His_2_12Jul2018  12Jul2018
6   His_205_26Oct2017_AD  26Oct2017
7  His_205_26Oct2017_ABC  26Oct2017

最新更新