我有一个带有列日期包含不需要字符的数据框架,我只需要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