如何基于列表替换列值?

2024-06-08 06:44:04 发布

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

我有这样一份清单:

x = ['Las Vegas', 'San Francisco, 'Dallas']

一个看起来有点像这样的数据帧:

import pandas as pd
data = [['Las Vegas (Clark County), 25], ['New York', 23], 
        ['Dallas', 27]]
df = pd.DataFrame(data, columns = ['City', 'Value'])

我想将DF中的“拉斯维加斯(克拉克县)”中的城市值替换为中的“拉斯维加斯”。在我的数据框中,有多个城市的名称不同,需要更改。我知道我可以用正则表达式去掉括号后面的部分,但我想知道是否有更聪明、更通用的方法


Tags: 数据importpandasnewdataaslaspd
1条回答
网友
1楼 · 发布于 2024-06-08 06:44:04

对于正则表达式OR,使用^{}join列出的|的^{ed值,然后用^{}将不匹配的值替换为原始值:

df['City'] = df['City'].str.extract(f'({"|".join(x)})', expand=False).fillna(df['City'])
print (df)
        City  Value
0  Las Vegas     25
1   New York     23
2     Dallas     27

另一个想法是将^{}与循环一起使用,但如果list中的数据帧较大且值较多,则速度应较慢:

for val in x:
    df.loc[df['City'].str.contains(val), 'City'] = val

相关问题 更多 >

    热门问题