首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >修改我的熊猫数据的最快方法是什么?

修改我的熊猫数据的最快方法是什么?
EN

Stack Overflow用户
提问于 2019-12-09 05:51:29
回答 1查看 62关注 0票数 0

dataframe有122,145行。以下是数据片段:

代码语言:javascript
复制
country_name,subdivision_1_name,subdivision_2_name,city_name
Spain,Madrid,Madrid,Sevilla La Nueva
Spain,Principality of Asturias,Asturias,Sevares
Spain,Catalonia,Barcelona,Seva
Spain,Cantabria,Cantabria,Setien
Spain,Basque Country,Biscay,Sestao
Spain,Navarre,Navarre,Sesma
Spain,Catalonia,Barcelona,Barcelona

在满足以下两项条件时,我希望用city_name替换subdivision_2_name:

  1. subdivision_2_name和city_name具有相同的country_name和相同的subdivision_1_name,而
  2. subdivision_2_name在city_name中存在。

例:对于city_name "Seva“,subdivison_2_name”巴塞罗那“也是以city_name的形式出现在dataframe中,有着同样的country_name”西班牙“和同样的subdivision_1_name "Catalonia”,所以我将把"Seva“替换为”巴塞罗那“。

我能够创造一个适当的申请功能。我准备了一个循环:

代码语言:javascript
复制
for i in range(df.shape[0]):
    if df.subdivision_2_name[i] in set(df.city_name[(df.country_name == df.country_name[i]) & (df.subdivision_1_name == df.subdivision_1_name[i])]):
        df.city_name[i] = df.subdivision_2_name[i]

编辑:这个循环运行了1637秒(~28分钟)。

给我一个更好的方法。

EN

回答 1

Stack Overflow用户

发布于 2019-12-09 08:42:33

使用:

代码语言:javascript
复制
def f(x):
    if x['subdivision_2_name'].isin(x['city_name']).any():
        x['city_name'] = x['subdivision_2_name']
    return (x)

df1 = df.groupby(['country_name','subdivision_1_name','subdivision_2_name']).apply(f)
print (df1)
  country_name        subdivision_1_name subdivision_2_name         city_name
0        Spain                    Madrid             Madrid  Sevilla La Nueva
1        Spain  Principality of Asturias           Asturias           Sevares
2        Spain                 Catalonia          Barcelona         Barcelona
3        Spain                 Cantabria          Cantabria            Setien
4        Spain            Basque Country             Biscay            Sestao
5        Spain                   Navarre            Navarre             Sesma
6        Spain                 Catalonia          Barcelona         Barcelona
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59243188

复制
相关文章

相似问题

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