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')