Python 3.x 在python中使用数据帧避免for循环
我在Python中有两个数据帧,分别命名为Python 3.x 在python中使用数据帧避免for循环,python-3.x,pandas,dataframe,Python 3.x,Pandas,Dataframe,我在Python中有两个数据帧,分别命名为GroupedCode(70000行和3列)和ICD9(11500行和27列)。我的目标是在GroupedCode的Code9列中找到ICD9CMCode列中出现的ICD9的TotalDiag列中的每个元素,每次找到匹配项时,将ICD9的列的值附加到名为Freq的列表中。 我提出了一个For循环来实现这一点,但它需要大量的时间来完成。我想知道是否有更好的方法来加速for循环,或者更好地避免它 以下是我的for循环: Freq = [] for code
GroupedCode
(70000行和3列)和ICD9
(11500行和27列)。我的目标是在GroupedCode
的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)
考虑两个数据帧以保持彼此之间的匹配,然后将pandas系列向下投射到一个数据帧。目前,您正在将numpy数组(不是单个值)或0存储到列表中
merged_df = pd.merge(GroupedCode, ICD9, left_on='ICD9CMCode', right_on='Code9')
Freq = merged_df['TotalDiag'].tolist()
甚至在多个内部连接匹配的情况下考虑唯一值。
Freq = merged_df['TotalDiag'].unique().tolist()