Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 在python中使用数据帧避免for循环_Python 3.x_Pandas_Dataframe - Fatal编程技术网

Python 3.x 在python中使用数据帧避免for循环

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

我在Python中有两个数据帧,分别命名为
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()