Python 熊猫:在列中查找字符串,并将其替换为具有递增值的数字

Python 熊猫:在列中查找字符串,并将其替换为具有递增值的数字,python,pandas,dataframe,Python,Pandas,Dataframe,我正在处理一个数据帧,其中有多个列,其中一个列中有多行,大约1000多行包含字符串值。请查看下表了解更多详细信息: 在上图中,我希望通过从第一列(主组)中选取值并增加一(01),将列组_Number中的字符串值更改为Number,并希望值如下所示: 还需要验证,如果字符串是重复的,那么它将替换为已更改的数字,而不是提供一个新的数字。例如,在上面的图像中,ANAYSIM正在复制,而不是给一个新的序列号,我希望已经给了重复字符串一个编号 已经检查了不同的链接,但他们关注的是用户提供的值:

我正在处理一个数据帧,其中有多个列,其中一个列中有多行,大约1000多行包含字符串值。请查看下表了解更多详细信息:

在上图中,我希望通过从第一列(主组)中选取值并增加一(01),将列组_Number中的字符串值更改为Number,并希望值如下所示:

还需要验证,如果字符串是重复的,那么它将替换为已更改的数字,而不是提供一个新的数字。例如,在上面的图像中,ANAYSIM正在复制,而不是给一个新的序列号,我希望已经给了重复字符串一个编号

已经检查了不同的链接,但他们关注的是用户提供的值:




任何有助于实现预期结果的帮助都将受到高度赞赏

我们可以使用
groupby

s=(df.groupby('MasterGroup').cumcount()+1).mul(10).astype(str)
t=pd.to_datetime(df.Group_number, errors='coerce')
然后我们分配

df.loc[t.isnull(), 'Group_number']=df.MasterGroup.astype(str)+s

嗨,尤本,谢谢你的快速回复。我在线收到错误消息(TypeError:只能将str(而不是“int”)连接到str):df.loc[t.isnull(),'Group_number']=df.MasterGroup*100+sYoben,这也在更改现有的数值,我不想更改。@Baig不应该将原始数值更改为NaN,改为numeric只会返回NaN,当输入无法转换为数字Yoben时,我会在Group_Number列下得到以下输出:Group_Number 291029910209020801080208030804080508060如果您看到前四(04)行,输出将从我在文章中的原始图像从2901更改为2910,依此类推。。。并且以十(10)而不是一(01)递增。为什么使用
/dot/attribute样式访问列?除非绝对必要,否则请不要将信息作为图像共享。请参阅:。以下是我在下面提到的相关资源:。