首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >从iterrows()到更快的“嵌套Pythonish循环”

从iterrows()到更快的“嵌套Pythonish循环”
EN

Stack Overflow用户
提问于 2019-09-04 08:16:31
回答 2查看 160关注 0票数 0

我正在尝试将一段代码从iterrows()演变为更快的代码,因为我有一个嵌套循环,复杂性太大了。

我发现apply和向量化更好,但不知道如何在嵌套循环中工作。

这就是我现在要做的。

代码语言:javascript
运行
AI代码解释
复制
clean = df.drop_duplicates(subset = "DESCRIPTION", keep = "first")
clean = clean.drop_duplicates(subset = "IMAGES", keep = "first")

##methode naive et un poil onereuse (n^2) pour ajouter les donnees extraites     
for index, crow in tqdm(clean.iterrows()):
for drow in df.iterrows():
    if crow["DESCRIPTION"] == drow[1]["DESCRIPTION"] or (crow["IMAGES"] == drow[1]["IMAGES"] and crow["IMAGES"] != []):
        if crow["CRAWL_SOURCE"] != drow[1]["CRAWL_SOURCE"] and crow["CRAWL_SOURCE"] not in drow[1]["CRAWL_SOURCE"]:
            clean.loc[index, "CRAWL_SOURCE"] = crow["CRAWL_SOURCE"] + " " + drow[1]["CRAWL_SOURCE"]

我正在删除重复项,并将干净的数据集保存在" clean“变量中。因为我仍然需要从副本中保留一些数据,所以我运行了一个嵌套循环,以从未更改的原始df中取回所需的数据。

我是Python的新手,所以我这样做可能是错误的,但我想向量化这个嵌套循环。

绿色是DESCRIPTION字段,它创建重复项。数据集"clean“没有重复,它来自数据集"df”。数据集"df“包含doubles以及它们拥有的附加数据。

最后,我希望“干净”的数据集包含可以在"df“的"CRAWL_SOURCE”列中找到的附加信息,如下所示:

第一行没有重复,所以它只有1个黄色的值。第二行有一个副本,所以我添加了信息。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-09-04 08:55:20

如果数据帧“干净”源自数据帧"df“,那么您只需删除副本并拥有所有信息。

代码语言:javascript
运行
AI代码解释
复制
df_clean = df.drop_duplicates(subset = ["columnX", "columnY"], keep = "first").drop_duplicates(subset = "DESCRIPTION", keep = "first")

如果不是这样,您可以简单地加入或合并您想要添加回来的信息,如下所示:

代码语言:javascript
运行
AI代码解释
复制
df_result = df_clean.reset_index().merge(df, on=["DESCRIPTION","CRAWL_SOURCE"], how="left").set_index("index")

请注意,"on=[]“参数需要您想要匹配的列表。

票数 1
EN

Stack Overflow用户

发布于 2019-09-04 09:21:37

根据我从您的代码中所理解的,您希望每个IMAGE都有一行,其中所有CRAWL_SOURCE都与此IMAGE的一个实例中出现的IMAGEDESCRIPTION匹配,即使它是另一个IMAGE。如果我弄错了,发表评论,我会删除这篇文章,但这是我想出来的(我知道它很混乱,也许有人会找到一种“更干净”的方法):

代码语言:javascript
运行
AI代码解释
复制
import itertools
df1 = df.groupby(['IMAGES']).agg(lambda x: list(x))['CRAWL_SOURCE'].reset_index()
df2 = df.groupby(['DESCRIPTION']).agg(lambda x: list(x))  
['CRAWL_SOURCE'].reset_index()
clean = df.merge(df1.rename({'CRAWL_SOURCE': 'CSI'}, axis=1), how='left').merge(df2.rename({'CRAWL_SOURCE': 'CSD'}, axis=1), how='left')
clean['CRAWL_SOURCE'] = clean['CSI'] + clean['CSD']
clean = clean.groupby(['IMAGES'])\
.agg(lambda x: ' '.join(list(set(list(itertools.chain.from_iterable(x)))))) 
['CRAWL_SOURCE'].reset_index()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57784224

复制
相关文章
精品:TCP连接的建立和终止
TCP是一个面向连接的协议。无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。
看、未来
2020/08/26
7950
精品:TCP连接的建立和终止
TCP连接是如何建立和终止的?
服务器在客户端建立连接时刚好断电。可以看出客户端进行了重试,但是重试之间的时间间隔第一次是5.81秒,而第二次间隔是24.00秒。
爬蜥
2019/07/08
1.7K0
TCP连接是如何建立和终止的?
TCP连接异常终止(RST包)场景分析
TCP的异常终止是相对于正常释放TCP连接的过程而言的,我们都知道,TCP连接的建立是通过三次握手完成的,而TCP正常释放连接是通过四次挥手来完成。但是有些情况下,TCP在交互的过程中会出现一些意想不到的情况,导致TCP无法按照正常的三次握手建立连接或四次挥手来释放连接。如果此时不通过其他的方式来释放TCP连接的话,这个TCP连接将会一直存在,占用系统的资源。在这种情况下,我们就需要有一种能够释放TCP连接的机制,这种机制就是TCP的reset报文。reset报文是指TCP报头的标志字段中的reset位置一的报文,如下图所示:
全栈程序员站长
2022/11/15
4.5K0
TCP连接异常终止(RST包)场景分析
【Mac】APP无法打开或文件损坏的处理方法
在 MAC 下安装一些软件时提示”来自身份不明开发者“,其实这是MAC新系统启用了新的安全机制。 默认只信任 Mac App Store 下载的软件和拥有开发者 ID 签名的应用程序。
redszhao
2021/08/09
1.3K0
【Mac】APP无法打开或文件损坏的处理方法
mac 无法打开22端口 无法远程连接ssh 的解决办法
mac 无法远程连接 原因是22端口没有打开 尝试通过命令行打开22端口 依然失败!! 解决办法:手动设置 ①打开系统偏好设置-共享 ②勾选远程登录并添加用户 现在再试一下远程ssh ,已经可以成功连接了!
小黑同学
2021/12/06
3.8K0
mac 无法打开22端口 无法远程连接ssh 的解决办法
windows10无法打开onedrive-打开onedrive提示文件或目录损坏且无法读取
今天电脑开机,发现onedrive没有随着开机自启,于是在搜索栏搜到onedrive应用,手动点击,没有任何反应
承世
2023/04/07
7.1K0
windows10无法打开onedrive-打开onedrive提示文件或目录损坏且无法读取
PHP curl或file_get_contents下载图片损坏或无法打开
通过curl或者file_get_contents获取抓取远程图片并且保存到本地,发现损坏了很多图片,比如访问
超级小可爱
2023/02/20
1.4K0
Mac应用程序无法打开或文件损坏的处理方法
错误截图 当遇到这种情况,真的损坏了么?是不是真的要移动到废纸篓呢?遇到这样的情况,通常是打开任何来源即可轻松解决,下面讲一下Mac应用程序无法打开或文件损坏的处理方法,解答Mac没有任
骤雨重山
2022/05/30
3.9K0
Mac应用程序无法打开或文件损坏的处理方法
内存或磁盘空间不足,excel无法再次打开_打开文件显示内存或磁盘空间不足
在网络上下载的文件,使用EXCEL打开的时候提示“内存或磁盘空间不足,Microsoft Excel 无法再次打开或保存任何文档。”,针对这个问题,装机之家小编特地在网上搜罗了具体解决方法,但是网上提供的增加虚拟内存的方法,并不能解决该问题,不过经过小编琢磨,终于找到能够解决该问题的方法,下面装机之家分享一下内存或磁盘空间不足 excel无法再次打开解决方法,来看看吧!
全栈程序员站长
2022/09/21
5.5K0
内存或磁盘空间不足,excel无法再次打开_打开文件显示内存或磁盘空间不足
Python代理无法连接或连接不稳定故障排除指南
在使用Python进行网络爬虫或访问外部资源时,经常会遇到代理无法连接或连接不稳定的问题。本文将提供一份详细的故障排除指南,帮助你解决Python代理连接问题,确保顺利进行网络操作。
华科云商小彭
2023/08/25
4790
Python代理无法连接或连接不稳定故障排除指南
localhost或127.0.0.1无法连接到mysql的解决方案
在my.ini文件中加入bind-address = 127.0.0.1便可解决该问题
wuweixiang
2018/08/14
3.9K0
localhost或127.0.0.1无法连接到mysql的解决方案
java中跳出或终止if语句的方法
break:跳出当前循环;但是如果是嵌套循环,则只能跳出当前的这一层循环,只有逐层break才能跳出所有循环。
Java架构师必看
2021/12/21
5.6K1
Android检测网络是否可用并打开、扫描、连接WIFI
需求:要求先检查网络是否可用,如果可用就跳过网络设置界面,如果不可用就打开WIFI并扫描网络后去手动输入密码连接
程序员飞飞
2020/02/27
2.9K0
[TCP] tcp连接SYN超时重传次数和超时时间
当tcp进行三次握手的时候 , 第一步是客户端发送syn请求 , 服务端返回syn+sck , 客户端响应sck
唯一Chat
2021/04/22
8.8K0
SaveFileDialog无法打开
当前画面是报表画面,没用线程。主画面点击按钮,打开该画面,是在子线程中打开的,所以SaveFileDialog也无法直接打开
全栈程序员站长
2022/11/10
2K0
IReport无法打开的原因
大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说IReport无法打开的原因,希望能够帮助大家进步!!!
Java架构师必看
2021/11/30
2.3K0
IReport无法打开的原因
matlab中importdata无法打开文件_importdata无法打开文件
最近使用importdata函数不能读取全部数据,数据集315行,但是读取了197行,那就是197-198之间有问题,百度之后有了思路。由于没有找到具体的证据,所以这里说一下解决思路。
全栈程序员站长
2022/11/16
6.4K0
matlab中importdata无法打开文件_importdata无法打开文件
Visual Studio 2017 “无法查找或打开PDB文件“ 解决方法
我这儿选择使用http://msdl.microsoft.com/download/symbols,然后选择路径。
全栈程序员站长
2022/08/22
6.7K1
Visual Studio 2017 “无法查找或打开PDB文件“ 解决方法
点击加载更多

相似问题

检测TCP连接丢失的时间

23

TCP连接终止

10

终止连接TCP

13

终止现有tcp连接

21

Ruby on Rails:无法打开TCP连接

28
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档