如何在Pandas DataFrame中将Month-Year格式拆分为单独列?
解决方法:拆分「Month-Year」列报错的问题
错误原因
你直接调用df['Month-Year'].split()报错,是因为pandas的Series对象没有split方法——split是Python原生字符串的方法,必须通过Series的str属性来调用字符串处理方法。
具体解决方案
方法1:直接拆分字符串(最常用)
利用str.split结合expand=True,将拆分结果直接转为两列:
import pandas as pd # 假设你的数据集是df,目标列名为'Month-Year' df[['Month', 'Year']] = df['Month-Year'].str.split('-', expand=True)
如果存在多分隔符的情况(比如Jan-2023-xxx),可以用n=1限定只拆分一次,确保只得到月份和年份两列:
df[['Month', 'Year']] = df['Month-Year'].str.split('-', n=1, expand=True)
方法2:通过日期类型提取(更规范)
如果「Month-Year」是标准日期格式(比如Jan-2023),可以先转为日期类型,再提取月份和年份,避免拆分异常:
# 转换为日期类型(根据实际格式调整format参数,比如'%B-%Y'对应'January-2023') df['Date'] = pd.to_datetime(df['Month-Year'], format='%b-%Y') # 提取月份名称和年份 df['Month'] = df['Date'].dt.month_name() df['Year'] = df['Date'].dt.year # 可选:删除中间Date列 df.drop('Date', axis=1, inplace=True)
前置检查
- 确认列名拼写正确,比如是否是
'Month-Year'而非其他写法 - 确保目标列是字符串类型,若不是先转换:
df['Month-Year'] = df['Month-Year'].astype(str)
内容的提问来源于stack exchange,提问作者Samridh Vikhas S
相关产品推荐
相关产品推荐

