如何将released列拆分处理的已有代码改写为pandas lambda函数
实现方案
可以改写为lambda函数,结合pandas的apply方法即可实现,具体写法如下:
方案1:lambda+apply直接匹配原逻辑
# 逐行拆分released字段,生成日期原始值和国家两个字段 movies[['released_date_raw', 'released_country']] = movies['released'].apply( lambda x: pd.Series([x.split("(")[0], x.split("(")[1].replace(')', '')]) ) # 后续日期转换、提取年月逻辑和原代码保持一致 movies['released_date'] = pd.to_datetime(movies['released_date_raw']) movies['released_year'] = movies['released_date'].dt.year movies['released_month'] = movies['released_date'].dt.month # 可选:删除临时生成的原始日期字段 movies.drop('released_date_raw', axis=1, inplace=True)
方案2:更高效的向量化处理(推荐大数据量使用)
如果数据集规模较大,更推荐用pandas原生字符串方法实现,性能比lambda+apply更高,不需要显式写lambda:
# 用原生str方法拆分字符串,避免逐行遍历 split_res = movies['released'].str.split('(', n=1, expand=True) movies['released_date'] = pd.to_datetime(split_res[0].str.strip()) movies['released_country'] = split_res[1].str.rstrip(')').str.strip() # 提取年月 movies['released_year'] = movies['released_date'].dt.year movies['released_month'] = movies['released_date'].dt.month
内容的提问来源于stack exchange,提问作者Ojay
相关产品推荐
相关产品推荐

