Python 如何在pandas中编写有效的多条件搜索函数?

Python 如何在pandas中编写有效的多条件搜索函数?,python,pandas,parallel-processing,vectorization,vlookup,Python,Pandas,Parallel Processing,Vectorization,Vlookup,我有一个这样的数据帧 我想在zip和div列中搜索,然后获取type,并将该结果应用于所有唯一的拉链。pivot函数的类型,但返回实际值,而不是聚合函数。(假设只有zip和div的一种组合) 我尝试了apply/lambda函数,但速度非常慢。我的数据在df1中包含500K行,其中41K行是唯一的zips,15行是唯一的divs 有没有一种有效的方法可以得到如下结果 假设zip是非数字的。尝试: m=df.groupby('zip')['type'].apply(list) n=pd.Dat

我有一个这样的数据帧

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

我尝试了apply/lambda函数,但速度非常慢。我的数据在df1中包含500K行,其中41K行是唯一的
zip
s,15行是唯一的
div
s

有没有一种有效的方法可以得到如下结果

假设zip是非数字的。

尝试:

m=df.groupby('zip')['type'].apply(list)
n=pd.DataFrame(m.values.tolist(),columns=df['div'].unique(),index=m.index)
print(n)


p.S您不应该将
div
列作为一个列,因为这是一个pandas函数(我建议您将其更改为除div之外的其他函数)

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

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

你想知道,由于某种原因,我在真实数据上遇到了一个错误<代码>传递了13列,传递的数据在计算n时有187列
m=df.groupby('zip')['type'].apply(list)
n=pd.DataFrame(m.values.tolist(),columns=df['div'].unique(),index=m.index)
print(n)
     A  B  C  D  E
zip               
100  Q  Q  Q  Q  Q
101  P  Q  P  R  P
df_pivot=df.pivot_table(index='zip',columns=['div'],aggfunc='first')