首页 > 解决方案 > 如何在 pandas 中编写高效的多条件搜索功能?

问题描述

我有一个这样的数据框。

在此处输入图像描述

我想在列中搜索zipdiv获取type该结果并将其应用于所有唯一的拉链。一种枢轴函数,但返回实际值而不是聚合函数。(假设只有一个zip和的组合div

df1 = pd.DataFrame(list(product(list(range(100,200)), ['A','B','C','D','E'])), columns=['zip', 'div'])
df1 = df1.drop(df1.index[np.random.randint(0,499,size=100)]).reset_index()
df1['type'] = np.random.choice(['P','Q','R'],size=df1.shape[0])

我试过 apply/lambda 函数,但它很慢。我的数据在 df1 中包含 500K 行,其中包含 41K 唯一zip的 s 和 15 个唯一div的 s

有没有一种有效的方法来获得如下结果。

在此处输入图像描述

df2 = pd.DataFrame({'zip':[100,101],'A':['Q','P'],'B':['Q','Q'],'C':['Q','P'],'D':['Q','R'],'E':['Q','P']})

假设 zip 是非数字的。

标签: pythonpandasparallel-processingvectorizationvlookup

解决方案


如果您想使用数据透视表,另一种解决方案:

df_pivot=df.pivot_table(index='zip',columns=['div'],aggfunc='first')

推荐阅读