Skip to main content
 首页 » 编程设计

python之如何根据字符串(如果存在)将列拆分为单独的列

2025年05月04日20linjiqin

我有一个数据框如下:

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+', '')