是否有基于其他列值筛选列值的函数?

2024-09-27 21:24:18 发布

您现在位置:Python中文网/ 问答频道 /正文

首先,大家好。。我是新来的,我会尽力写一个问题

我有以下建议:

**Adress                                       Postalcode      City
0   Hammer Landstraße 91 41460 Neuss             41460         Neuss
1   Grebbeberglaan 15 unit 5 B 3527VX Utrecht   3527VX         Utrecht
2   Brink 88b 7411 BX, Deventer Nederland      7411 BX         Deventer
3   Flevolaan 58 Postbus 399 1380 AJ Weesp     1380 AJ         Weesp

我正在尝试根据Postalcode和City值筛选Address列!我只是不知道怎么做:(

我的期望输出将是:

**Adress                                       Postalcode      City
0   Hammer Landstraße 91                         41460         Neuss
1   Grebbeberglaan 15 unit 5 B                  3527VX         Utrecht
2   Brink 88b Nederland                        7411 BX         Deventer
3   Flevolaan 58 Postbus 399                   1380 AJ         Weesp

我尝试了以下方法:

df1['Adress'] = filter(lambda i: not regex.search(df1[Postalcode]), df1[str('Adress')]). 

因此,我希望保留所有行,但根据其他两列的值更新(读取:删除)Adress列的值

不过,这会返回df1 Adress列的筛选器对象。你们中有人能帮我吗

欢迎您给我任何改进提问的建议


Tags: cityunit建议df1hammerbxajadress
1条回答
网友
1楼 · 发布于 2024-09-27 21:24:18

你在找这样的东西吗:

import pandas as pd

data = [['Hammer Landstraße 91 41460 Neuss', "41460", "Neuss"], ['Brink 88b 7411 BX, Deventer Nederland', "7411 BX", "Deventer"]] 

df = pd.DataFrame(data, columns = ['Address', 'Postalcode', 'City']) 

df['Address'] = df.apply(lambda x: x['Address'].replace(x['Postalcode'], ''), axis=1)
df['Address'] = df.apply(lambda x: x['Address'].replace(x['City'], ''), axis=1)
df['Address'] = df.apply(lambda x: x['Address'].replace(', ', ''), axis=1)

最后一个是删除逗号,可以合并为一行,但这对可见性更好

输出:

                  Address Postalcode      City
0  Hammer Landstraße 91        41460     Neuss
1    Brink 88b  Nederland    7411 BX  Deventer

相关问题 更多 >

    热门问题