添加字符串+;自动递增-熊猫,python
我在数据框中有一列,如果另一列为空,我需要更新该列。该列为“subscriberkey”,其中已包含值。我需要用字符串+数字更新这些值。我的目的不是创建一个重复的列 该值必须是唯一的,因此我最初认为将字符串+一个数字追加是一种方法添加字符串+;自动递增-熊猫,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
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_