Py学习  »  Python

在python中使用数据帧避免for循环

Mahmoud Zeydabadinezhad • 5 年前 • 1327 次点击  

我在python中有两个名为 GroupedCode (70000行3列)和 ICD9 (11500行27列)。我的目标是找到 Code9 成组编码 出现在 ICD9CMCode ICD9 每次我找到一个匹配项时,将 TotalDiag ICD9 在一个名为 Freq . 我想出了一个for循环来完成这项工作,但是需要很长时间才能完成。我想知道是否有更好的方法来加速for循环或者更好地避免它。

这是我的for循环:

Freq = []
for code in GroupedCode.Code9:

if (len(ICD9.TotalDiag[ICD9['ICD9CMCode'].str.match(code)]) == 0):
    Freq.append(0)
else:
    Freq.append(ICD9.TotalDiag[ICD9['ICD9CMCode'].str.match(code)].values)
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/41135
 
1327 次点击  
文章 [ 1 ]  |  最新文章 5 年前
Parfait
Reply   •   1 楼
Parfait    6 年前

考虑 merging 这两个数据帧保持彼此之间的匹配,然后将pandas系列向下转换为 list . 目前,您正在将numpy数组(不是单个值)或0存储到列表中。

merged_df = pd.merge(GroupedCode, ICD9, left_on='ICD9CMCode', right_on='Code9')

Freq = merged_df['TotalDiag'].tolist()

甚至考虑 unique() 对于多个内部联接匹配的唯一值。

Freq = merged_df['TotalDiag'].unique().tolist()