python - 如何在 pandas 中编写高效的多条件搜索功能?
问题描述
我有一个这样的数据框。
我想在列中搜索zip
并div
获取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 是非数字的。
解决方案
如果您想使用数据透视表,另一种解决方案:
df_pivot=df.pivot_table(index='zip',columns=['div'],aggfunc='first')
推荐阅读
- javascript - 如何解决 Ripple 测试服务器连接错误?
- javascript - Vue 错误消息:不要在突变处理程序之外改变 vuex 存储
- mysql - MySQL 语法错误 Match() Against() 列别名?
- react-native - 设置默认路线时反应导航问题
- laravel - Laravel API 上的 VueJs(使用 Quasar 框架)中的 Axios Cors 错误
- c# - C# 多个 if 语句 - 面向对象编程
- c# - C# Web API 循环只发布一个值
- html - html中srcset属性的w和px
- angular - 当用户停止从不同组件输入时启动功能
- python - 在python中使用硒滚动动态内容不起作用