gpt4 book ai didi

python - 从修改值的旧列在数据框中创建新列的最简单逻辑是什么?

转载 作者:行者123 更新时间:2023-11-28 19:53:27 32 4
gpt4 key购买 nike

我主要是 R 用户,但在某些用例中我正在切换到 Python,而且我要完成非常琐碎的任务,包括清理值/数据准备。

我有一个数据框,其值是原始格式并基于这些值,我想使用类似 string.replace() 的函数创建一个具有干净值的新列

让我们创建一个虚拟表:

import pandas as pd
dummy_table = pd.DataFrame(data = ["London - City", "Manchester - City"], columns = ["City_raw"])

dummy_table
City_raw
0 London - City
1 Manchester - City

在 R 中,我会使用非常简单直接的逻辑来创建一个具有修改后的原始值的新列。

dummy_table$City_clean <- gsub(" - City", "", dummy_table$City_raw)

结果是:

       City_raw       City_clean
0 London - City London
1 Manchester - City Manchester

我想保留原始和新修改的两列。我尝试在 Python 中使用此语法:

dummy_table['City_clean'] = dummy_table['City_raw'].replace(" - City",  "", inplace = False)

但是生成的表有新列,其值与原始列相同,这意味着没有完成替换,只是复制了值。

       City_raw       City_clean
0 London - City London - City
1 Manchester - City Manchester - City

我的问题是:是否有一些简单明了的语法可以对列执行向量化(对列的所有值进行操作)操作并创建一个新列,或者我是否需要在 Python 中花哨并使用某种应用/lambda 函数?

对于为什么它在 R 中工作而不在 Python 中工作,或者我做错了什么,我也很感激。

最佳答案

replace 中需要 regex=True :

dummy_table['City_clean'] = dummy_table['City_raw'].replace(" - City",  "", regex = True)
print (dummy_table)
City_raw City_clean
0 London - City London
1 Manchester - City Manchester

或者更好:

dummy_table['City_clean'] = dummy_table['City_raw'].replace("\s*-\s*City",  "", regex = True)
print (dummy_table)
City_raw City_clean
0 London - City London
1 Manchester - City Manchester

关于python - 从修改值的旧列在数据框中创建新列的最简单逻辑是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44327175/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com