繁体   English   中英

python 根据循环内的其他 2 列计算新列值

[英]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_idrepo_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM