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

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

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

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

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

这就是我现在要做的。

代码语言:javascript
代码运行次数:0
运行
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
代码运行次数:0
运行
AI代码解释
复制
df_clean = df.drop_duplicates(subset = ["columnX", "columnY"], keep = "first").drop_duplicates(subset = "DESCRIPTION", keep = "first")

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

代码语言:javascript
代码运行次数:0
运行
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
代码运行次数:0
运行
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

复制
相关文章
React + Redux 组件化方案
作者:何方舟 在介绍组件化方案之前,先对 react 和 redux 做一个简单介绍。 Why React 理想中的组件化,第一步应该就是组件的标签化, 例如有一个 Header 组件,如下图所示
腾讯IVWEB团队
2017/05/03
1.4K0
React + Redux 组件化方案
理想中的组件化,第一步应该就是组件的标签化, 例如有一个 Header 组件,如下图所示
IMWeb前端团队
2019/12/04
5710
React + Redux 组件化方案
React + Redux 组件化方案 在介绍组件化方案之前,先对 react 和 redux 做一个简单介绍。 Why React 理想中的组件化,第一步应该就是组件的标签化, 例如有一个 Head
IMWeb前端团队
2017/12/29
7820
React + Redux 组件化方案
React-Redux-DevTools和React-Redux优化
GitHub 地址:https://github.com/reduxjs/redux-devtools
杨不易呀
2023/10/01
2450
react 和 redux 入门
本文作者:IMWeb 王少飞 原文出处:IMWeb社区 未经同意,禁止转载 react的核心思想:组件封装。 页面的所有元素都是可以封装成组件 react包含以下几个概念 1 组件 2 JS
IMWeb前端团队
2018/01/08
1.1K0
react 和 redux 入门
react的核心思想:组件封装。 页面的所有元素都是可以封装成组件 react包含以下几个概念
IMWeb前端团队
2019/12/04
6780
React redux
Redux是一个JavaScript状态管理库,它可以与任何JavaScript应用程序一起使用,不仅限于React。Redux基于单一状态树的概念,应用程序的所有状态都保存在一个对象中。通过使用Redux,可以以一种可预测和可维护的方式管理应用程序的状态,并使用纯函数来处理状态的变化。
堕落飞鸟
2023/05/20
1.2K0
【React】归纳篇(十)组件间通信方式之Redux | UI组件AntDesign | Redux-react
文档: https://reacttraining.com/react-router/web/guides/philosophy
前端修罗场
2023/10/07
2710
【React】归纳篇(十)组件间通信方式之Redux | UI组件AntDesign | Redux-react
React 进阶 - React Redux
应用初始化时候,只请求一次数据,然后通过状态管理把数据存起来,需要数据的组件只需要从状态管理中‘拿’就可以了。
Cellinlab
2023/05/17
9450
React 进阶 - React Redux
React的诱惑: React-Redux-三大原则和React-Redux-基本使用、优化、综合运用、其他组件使用
官方文档:https://www.redux.org.cn/docs/introduction/ThreePrinciples.html
杨不易呀
2023/09/25
3140
React的诱惑: React-Redux-三大原则和React-Redux-基本使用、优化、综合运用、其他组件使用
React---react-redux的使用
1).UI组件:不能使用任何redux的api,只负责页面的呈现、交互等。
半指温柔乐
2021/05/10
1.2K0
React 和 Redux 的动态导入
对于大型 Web应用程序,代码组织非常重要。 它有助于创建高性能且易于理解的代码。 最简单的策略之一就是代码分离。 使用像 Webpack 这样的工具,可以将代码拆分成更小的部分,它们分为两个不同的策略,静态和动态。
前端小智@大迁世界
2019/04/18
2.2K0
React 和 Redux 的动态导入
React和Redux——状态管理Flux和Redux
在强调组件化的React中,我们需要以高内聚、低耦合的原则设计高可复用性的组件。因此渲染组件的数据由两部分组成,一个是由父组件传入的Props参数、一个是组件的内部状态State。Props参数可以是任何的Javascript对象,作为组件本身可以通过使用propTypes限制必须输入的参数和输入参数的类型以保证组件的可用性。State负责维护组件内部的状态,组件内部必要时可以通过触发父组件传递的回调函数传递信息给父组件或者将State以Props的形式传递给子组件。
lyndonxdlin
2018/07/05
1.9K0
React-Redux 源码解析系列 -- React-Redux的作用
前面的章节讲完了redux的部分,又已经有了react,那为什么还需要有React-Redux呢?这个React-Redux 又帮助我们做了什么呢?
IMWeb前端团队
2019/12/03
7730
React-Redux 源码解析系列 -- React-Redux的作用
React中的Redux
整个应用的state被存储在一棵object tree中,并且这个object tree只存在于唯一一个store中。
贺贺V5
2018/08/21
4K0
React中的Redux
React-Redux 源码解析系列 -- React-Redux的作用
摘要总结:本文介绍了React-Redux的代码架构和设计理念,通过代码示例和示意图解释了React-Redux的代码结构和流程。同时,文章还探讨了React-Redux的优缺点,包括连接react和redux的方式、高阶组件的使用、纯组件的使用等。通过本文的讲解,可以更好地理解React-Redux的工作原理和架构设计,对于学习和使用React-Redux具有很高的参考价值。
IMWeb前端团队
2017/12/29
9980
React-Redux 源码解析系列 -- React-Redux的作用
使用Redux和React-redux在React中进行状态管理
首先,我们需要使用create-react-app命令行工具安装新的react应用。
前端修罗场
2022/07/29
2.9K0
使用Redux和React-redux在React中进行状态管理
React进阶(6)-react-redux的使用
前言 撰文:川川 您将在本文当中学习到 react-redux是什么,解决什么问题 UI组件以及容器组件 react-redux中两个重要的API,Provider以及connect mapState
itclanCoder
2020/10/28
2K0
React进阶(6)-react-redux的使用
React引入Redux实现组件间共享状态
安装 npm install redux -s 在src目录下新建store文件夹,新增index.js文件 导入redux基本模块 import { createStore } from 'redux'; const store = createStore(); export default store; 再新增reducer.js文件,这里存放共享的变量 const defaultState = { countNum: 0 } export default (state = defaultSta
明知山
2021/06/21
8990
react-redux
React-Redux是Redux的官方React绑定。 它允许您的React组件从Redux存储中读取数据,并将操作分派给存储以更新数据。 它由二个重要的部分组成,一个是<Provider />组件,另一个是connect()是react-redux提供的一个柯里化的函数, 用于连接redux
_kyle
2020/08/24
9940

相似问题

输入形状的'conv3d_1/convolution‘(op:'Conv3D')从1减去5导致尺寸为负

141

输入形状为[?,1,74,16],[3,3,16,32]的'conv2d_2/convolution‘(op:'Conv2D')从1减去3导致的负尺寸

115

输入形状为[?,1,1,5]的“卷积/卷积/Conv2D”(op:'Conv2D')从1中减去6所引起的负维尺寸

11

对于输入形状为[?,5,2,64],[?,5,64]的“卷积”(op:'Conv2D'),从2中减去5的负维尺寸

31

Keras -对于输入形状为[?,4,80,64],[5,64]的“卷积”(op:'Conv2D'),从4中减去5的负维尺寸。

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文