如何将Python函数返回的多个值存入Pandas DataFrame中
解决方法
你当前得到Series的原因是:apply 默认会把scrape函数返回的二元组作为单个元素存储,不会自动拆分列,你可以用以下两种方法实现需求:
方法1:配合pd.Series拆分返回结果
# 对爬虫返回的元组进行拆分,得到两列结果 df[['title_box', 'price']] = df['list_urls'].apply(lambda x: pd.Series(scrape(x))) # 提取需要的三列生成最终DataFrame final_df = df[['list_urls', 'title_box', 'price']]
方法2:使用apply的result_type参数(pandas 1.0+版本支持)
这种写法更简洁,不需要额外调用pd.Series:
df[['title_box', 'price']] = df['list_urls'].apply(lambda x: scrape(x), result_type='expand') final_df = df[['list_urls', 'title_box', 'price']]
小提示:你当前的
scrape函数中,正常请求时price是bs4的ResultSet对象,请求异常时是字符串No,两类数据类型不统一,后续如果需要做数据清洗、存储操作,可以在函数内提前把正常返回的price转成字符串或列表格式,避免后续处理报错。
内容的提问来源于stack exchange,提问作者mirko_vucinic
相关产品推荐
相关产品推荐

