gpt4 book ai didi

python - 如何替换列可能具有不同数据类型条目的数据框中的字符

转载 作者:行者123 更新时间:2023-12-04 03:46:09 24 4
gpt4 key购买 nike

python 新手想问一个快速的问题,关于如何同时替换多个字符,因为条目可能具有不同的数据类型。我只想更改字符串并保持其他一切不变:

import pandas as pd

def test_me(text):
replacements = [("ID", ""),("u", "a")] #
return [text.replace(a, b) for a, b in replacements if type(text) == str]

cars = {'Brand': ['HonduIDCivic', 1, 3.2,'CarIDA4'],
'Price': [22000,25000,27000,35000]
}

df = pd.DataFrame(cars, columns = ['Brand', 'Price'])
df['Brand'] = df['Brand'].apply(test_me)

导致

    Brand                       Price
0 [HonduCivic, HondaIDCivic] 22000
1 [] 25000
2 [] 27000
3 [CarA4, CarIDA4] 35000

而不是

    Brand                       Price
0 HondaCivic 22000
1 1 25000
2 3.2 27000
3 CarA4 35000

感谢任何建议!

最佳答案

如果替换永远不会有相同的搜索短语,将元组列表转换成字典然后使用会更容易

import re
#...
def test_me(text):
replacements = dict([("ID", ""),("u", "a")])
if type(text) == str:
return re.sub("|".join(sorted(map(re.escape, replacements.keys()),key=len,reverse=True)), lambda x: replacements[x.group()], text)
else:
return text

"|".join(sorted(map(re.escape, replacements.keys()),key=len,reverse=True)) 部分将创建一个正则表达式 re.escaped 字典键从最长的开始,以避免在处理共享相同前缀的嵌套搜索短语时出现问题。

Pandas 测试:

>>> df['Brand'].apply(test_me)
0 HondaCivic
1 1
2 3.2
3 CarA4
Name: Brand, dtype: object

关于python - 如何替换列可能具有不同数据类型条目的数据框中的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65116383/

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