python - 创建新列时 Pandas 的 apply() 和 Python 的 map() 之间的区别?
问题描述
我有一个df
包含我的项目的一些参考资料,例如:
root_path Credentials
Project1 path/to/ cred1.json
Project2 path/to/ cred2.json
Project3 path/to/ cred3.json
我需要第三列Client
来保存到 BigQuery API 的连接响应,这是一个对象。传递给函数的参数是由 组成的字符串df['root_path'] + df['Credentials']
。为此,我尝试了这两个查询:
使用
apply()
df['Client'] = df.apply(lambda x : bigquery.Client.from_service_account_json((df['root_path'] + df['Credentials']).values), axis = 1)
使用
map()
df['Client'] = map(lambda root,bq : bigquery.Client.from_service_account_json(root + bq), df['root_path'], df['Credentials'])
最后,第二个查询给了我想要的结果。有人能解释一下为什么第二个有效而第一个无效吗?据我了解,这是因为第一个查询每次都返回整个系列的对象,而第二个查询则逐行调用该函数。
提前致谢。
解决方案
推荐阅读
- laravel - Laravel + Nuxt - 如何在 VDS 中组合它们?
- cplex - 使用 PYOMO 在 CPLEX 日志上获取约束标签(非索引)
- python - 使用连续行作为 Y 轴的小提琴图
- algorithm - 更快的算法与更快的计算机
- c++ - 根据加载的图像调整 QGraphicsView 的大小并始终保持纵横比
- php - 使用 PHP 从新闻站点访问 XML 元素和命名空间(已编辑)
- android - nativescript - 提取 tns-android 时验证失败
- javascript - 需要哪些 javascript 包含文件才能使布局扩展在 cytoscape 中工作?
- python - 熊猫数据框在排序后未保存
- python - 从嵌套列表 Python 中删除重复项 - 错误