Python/Pandas:仅当string.starts使用特定字符串时应用替换

Python/Pandas:仅当string.starts使用特定字符串时应用替换,python,pandas,lambda,Python,Pandas,Lambda,使用pandas读取excel文件。 以下代码适用于一列: data["ProtocolTCP"] = data["ProtocolTCP"].str.replace("tcp-", "tcp ") 但是,我发现一些单元格在字符串中间有值,不想改变这些值。 我怎样才能将相同的命令仅应用于那些仅以“tcp-”开头的字符串 我认为一个“lambda”命令会起作用,但很难弄清楚。或者可能有比lambda更好的选择?您可以

使用pandas读取excel文件。 以下代码适用于一列:

data["ProtocolTCP"] = data["ProtocolTCP"].str.replace("tcp-", "tcp ")
<>但是,我发现一些单元格在字符串中间有值,不想改变这些值。

我怎样才能将相同的命令仅应用于那些仅以“tcp-”开头的字符串


我认为一个“lambda”命令会起作用,但很难弄清楚。或者可能有比lambda更好的选择?

您可以添加
^

data["ProtocolTCP"] = data["ProtocolTCP"].str.replace("^tcp-", "tcp ")
您可以使用
np.where()
,我认为它比lambda性能更好:

data["ProtocolTCP"] = np.where(data["ProtocolTCP"].startswith("tcp-"),data["ProtocolTCP"].str.replace("tcp-","tcp "),data["ProtocolTCP"])
使用列表理解的另一个选项:

data["ProtocolTCP"] = [x.replace("tcp-","tcp ") if x.startswith("tcp-") for x in data["ProtocolTCP"].values]

啊!我知道我设计得太过火了:-),太简单了!!!谢谢你@YOBEN_S!!!谢谢@Celius Stingher,但由于其简单性,选择了第一个选项。