python – 在pandas数据帧上执行复杂搜索的最快方法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 在pandas数据帧上执行复杂搜索的最快方法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2318字,纯文字阅读大概需要4分钟。
内容图文
![python – 在pandas数据帧上执行复杂搜索的最快方法](/upload/InfoBanner/zyjiaocheng/706/cd60be32d28c44b182c69385a2a94da7.jpg)
我试图找出在熊猫数据帧上执行搜索和排序的最快方法.下面是我想要完成的数据帧之前和之后.
之前:
flightTo flightFrom toNum fromNum toCode fromCode
ABC DEF 123 456 8000 8000
DEF XYZ 456 893 9999 9999
AAA BBB 473 917 5555 5555
BBB CCC 917 341 5555 5555
搜索/排序后:
flightTo flightFrom toNum fromNum toCode fromCode
ABC XYZ 123 893 8000 9999
AAA CCC 473 341 5555 5555
在这个例子中,我基本上试图过滤掉终端目的地之间存在的“航班”.这应该通过使用某种drop duplicates方法来完成,但让我感到困惑的是如何处理所有列.二元搜索是否是实现此目的的最佳方法?提示赞赏,努力想出这个.
可能的边缘情况:
如果数据已切换且我们的终端连接位于同一列中会怎样?
flight1 flight2 1Num 2Num 1Code 2Code
ABC DEF 123 456 8000 8000
XYZ DEF 893 456 9999 9999
搜索/排序后:
flight1 flight2 1Num 2Num 1Code 2Code
ABC XYZ 123 893 8000 9999
这种情况在逻辑上不应该发生.毕竟你怎么去DEF-ABC和DEF-XYZ?你不能,但’终点’仍然是ABC-XYZ
解决方法:
这是网络问题,所以我们使用networkx,注意,这里你可以有两个以上的站点,这意味着你可以有一些像NY-DC-WA-NC的情况
import networkx as nx
G=nx.from_pandas_edgelist(df, 'flightTo', 'flightFrom')
# create the nx object from pandas dataframe
l=list(nx.connected_components(G))
# then we get the list of components which as tied to each other ,
# in a net work graph , they are linked
L=[dict.fromkeys(y,x) for x, y in enumerate(l)]
# then from the above we can create our map dict ,
# since every components connected to each other ,
# then we just need to pick of of them as key , then map with others
d={k: v for d in L for k, v in d.items()}
# create the dict for groupby , since we need _from as first item and _to as last item
grouppd=dict(zip(df.columns.tolist(),['first','last']*3))
df.groupby(df.flightTo.map(d)).agg(grouppd) # then using agg with dict yield your output
Out[22]:
flightTo flightFrom toNum fromNum toCode fromCode
flightTo
0 ABC XYZ 123 893 8000 9999
1 AAA CCC 473 341 5555 5555
安装网络x
>点子:pip install networkx
> Anaconda:conda install -c anaconda networkx
内容总结
以上是互联网集市为您收集整理的python – 在pandas数据帧上执行复杂搜索的最快方法全部内容,希望文章能够帮你解决python – 在pandas数据帧上执行复杂搜索的最快方法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。