我有一个数据框如下:
df = pd.DataFrame({
'Event':['2018 Green Meeting','2018 Yellow Meeting','2018 Red Meeting',
'2017 Green Meeting','2017 Yellow Meeting','2017 Red Meeting',
'2016 Green Meeting','2016 Yellow Meeting','2016 Red Meeting',
'Blue Meeting','Purple Meeting','Green Meeting'],
'Count':[1,2,3,4,5,6,7,8,9,10,11,12]
})
我想将事件列拆分为“年份”和“事件名称”两列以获得以下输出:
df2 = pd.DataFrame({
'Year':['2018','2018','2018',
'2017','2017','2017',
'2016','2016','2016',
'Blue Meeting','Purple Meeting','Green Meeting'],
'Event_Name':['Green Meeting','Yellow Meeting','Red Meeting',
'Green Meeting','Yellow Meeting','Red Meeting',
'Green Meeting','Yellow Meeting','Red Meeting',
'Blue Meeting','Purple Meeting','Green Meeting'],
'Count':[1,2,3,4,5,6,7,8,9,10,11,12]
})
当我尝试使用正则表达式执行此操作时。它似乎没有用。我得到两列“年份”和“事件名称”。但年是空的。
这是我正在使用的:
df[['Year','Event_Name']] = df['Event'].str.split(r'\d{4}',expand=True)
如何让它正常工作?
请您参考如下方法:
使用 str.extract 和 fillna
df['Year']=df.Event.str.extract('(\d+)').fillna(df.Event)
然后我们替换
df['even_name']=df.Event.str.replace('\d+', '')
