首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从熊猫.apply向矢量化过渡

从熊猫.apply向矢量化过渡
EN

Stack Overflow用户
提问于 2020-11-23 17:32:32
回答 1查看 48关注 0票数 1

我正试图用一种纯粹的矢量化方法来改进熊猫的迭代。我对矢量化有点陌生,很难让它起作用。

在一个dataframe字段中,我发现了所有基于字符串的地址记录。我需要为每个唯一的地址分别检索数据,并为返回的记录分配一个唯一的标识符。通过这种方式,我可以为每个地址都有一个UID,而不管数据中是否有多个地址。

我开发了一种利用向量和熊猫.apply方法的方法。

代码语言:javascript
复制
def addr_id(x):
    global df
    df['Unq_ID'][df['address'] == x] = uuid.uuid4()

pd.DataFrame(df['address'].unique(), columns=["column1"]).apply(lambda x: addr_id(x["column1"]), axis=1)

但是,我正试图彻底消除.apply方法。这就是我被困的地方。

代码语言:javascript
复制
df['Unq_ID'][df['address'] == (pd.DataFrame(df['address'].unique(), columns=["column1"]))["column1"]] = uuid.uuid4()

我一直得到一个ValueError:只能比较相同标记的系列对象

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-23 18:33:58

你想摆脱潘达的申请是因为性能原因,对吗?

我可以提出一个不同的方法来解决你的问题吗?

您可以用column1的唯一值作为键,uuids作为值来构造dict,然后将它们映射到DataFrame:

代码语言:javascript
复制
uuid_dict = {key: uuid.uuid4() for key in df['column1'].unique()}
df['address'] = df.column1.map(uuid_dict)

这将是非常快的,因为它避免了Python中的循环( Pandas应用程序在幕后是这样做的)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64973369

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档