添加字符串+;自动递增-熊猫,python

添加字符串+;自动递增-熊猫,python,python,string,python-3.x,pandas,increment,Python,String,Python 3.x,Pandas,Increment,我在数据框中有一列,如果另一列为空,我需要更新该列。该列为“subscriberkey”,其中已包含值。我需要用字符串+数字更新这些值。我的目的不是创建一个重复的列 该值必须是唯一的,因此我最初认为将字符串+一个数字追加是一种方法 Age Email Subscriberkey 10 john@google.com giririfndfieir 23 kfkkfkfffrrrc 64 jane@ibm.co.uk ifiriri

我在数据框中有一列,如果另一列为空,我需要更新该列。该列为“subscriberkey”,其中已包含值。我需要用字符串+数字更新这些值。我的目的不是创建一个重复的列

该值必须是唯一的,因此我最初认为将字符串+一个数字追加是一种方法

Age Email            Subscriberkey
10  john@google.com  giririfndfieir
23                   kfkkfkfffrrrc
64  jane@ibm.co.uk   ifiririieiriei    
对于第二行,我希望subscriberkey是string+number+string 到目前为止,我已经尝试了以下方法:

 df.loc[df.Email == NULL, 'subscriberkey']= 'string'+.cumcount()+1+'string'

我将非常感谢您为我指点如何最好地实现这一目标。

您可以尝试以下方法:

nullCond = df.Email.isnull()    
# or nullCond = (df.Email == "") it those are empty strings

df.loc[nullCond, 'Subscriberkey'] = "string" + nullCond[nullCond].cumsum().astype(str) + "string"

考虑
df

df = pd.DataFrame(dict(EMAIL_ACQ_DT=['key1', None, 'key2', None, 'ke3', 'key4', None, None]))
print(df)

  EMAIL_ACQ_DT
0         key1
1         None
2         key2
3         None
4          ke3
5         key4
6         None
7         None


你犯了什么错误?你能把一个可复制的例子放在一起吗?我将编辑我的问题以反映这一点。我已经对我的问题进行了编辑,谢谢你尝试一下。尝试时出错:**无法将'list'对象隐式转换为str**已更新类型转换部分。需要使用
astype()
将int转换为str,您可以检查这是否有效。谢谢您的回答。这很有效。我有一个稍微不同的要求。不确定是否要提出新问题。假设我想标记订户密钥的所有合谋,以给出字符串+数字,即无条件,我将如何进行?您可以使用列表理解来构造字符串列表。类似于
df['Subscriberkey']=[“string”+str(i+1)表示范围内的i(df.Subscriberkey.size)]
好奇这是否来自Responsys?@Data\u Kid我不知道你在说什么。。。所以我猜不会:-)
fill_keys = df.groupby(df.EMAIL_ACQ_DT.isnull()).cumcount().apply('key{}_'.format)
df['subscriberkey'] = df.EMAIL_ACQ_DT.fillna(fill_keys)
print(df)

  EMAIL_ACQ_DT subscriberkey
0         key1          key1
1         None         key0_
2         key2          key2
3         None         key1_
4          ke3           ke3
5         key4          key4
6         None         key2_
7         None         key3_