![](/img/trans.png)
[英]how to compute a new column based on the values of other columns in pandas - python
[英]python compute new column value based on 2 other columns within loop
我有一个看起来像这样的 dataframe:
issue_id repo_id
101 10365
102 10543
103 11001
df = pd.DataFrame({"issue_id":[101,102,103],"repo_id":[10365,10543,11001]})
我想遍历 dataframe,使用每个索引中的issue_id
和repo_id
的值从 API 请求数据,并使用 append 对新列的响应。
这是我到目前为止所做的(适用于示例 df)它将 zenhub api 的get_issue_data
方法收到的有效负载分配给该索引处的 df['new']。
df['new'='na'
for i in df.index:
df['new'][i]=zh.get_issue_data(df.repo_id[i],df.issue_id[i])['pipelines']
(zh 只是我用来从 zenhub 提取问题数据的 pyzenhub 库的命名空间)
当我将它用于上面提到的小样本 df 时,它可以工作......但是当我在我的实际代码中使用它时,在另一个嵌套循环中,代码仍然运行但 df['new'] 只有以前分配的有'na'价值观。
我的问题是,我是否需要以不同的方式构造上述代码才能在循环中正常运行?
这个df['new'][i] =...
是链索引,不能保证有效。 此文档中的更多详细信息。
你可以这样做:
# you don't need this
# df['new'] = 'na'
df['new'] = [zh.get_issue_data(repo_id, issue_id)['pipelines']
for repo_id, issue_id in zip(df.repo_id, df.issue_id)]
或使用apply
:
df['new'] = df.apply(lambda x: zh.get_issue_data(x.repo_id, x.issue_id)['pipelines'],
axis=1)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.