【问题标题】:Adding String + Auto Increment - pandas, python添加字符串+自动增量 - 熊猫,python
【发布时间】:2017-05-12 21:52:59
【问题描述】:

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

值必须是唯一的,因此我最初认为附加字符串+数字是可行的方法。

Age Email            Subscriberkey
10  john@google.com  giririfndfieir
23                   kfkkfkfffrrrc
64  jane@ibm.co.uk   ifiririieiriei    

对于第二行,我希望订阅者键为字符串+数字+字符串 到目前为止,我已经尝试了以下方法:

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

我会很感激关于如何最好地实现这一点的指针。

【问题讨论】:

  • 您遇到了什么错误?你能把一个可重复的例子放在一起吗?
  • 我将编辑我的问题以反映这一点。
  • 我已经对我的问题进行了编辑

标签: python string python-3.x pandas increment


【解决方案1】:

你可以试试这样的:

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

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

【讨论】:

  • 感谢您试一试。尝试时出现错误。:**无法将“列表”对象隐式转换为 str **
  • 更新了类型转换部分。需要用astype()将int转换成str,可以看看是否可行。
  • 感谢您的回答。这运作良好。我的要求略有不同。不确定是否要打开一个新问题。假设我想标记订阅者密钥的所有列以给出字符串 + 数字,即。没有条件,怎么办?
  • 您可以使用列表推导来构造字符串列表。类似df['Subscriberkey'] = ["string" + str(i+1) for i in range(df.Subscriberkey.size)]
【解决方案2】:

考虑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

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_

【讨论】:

  • 好奇这是否来自 Responsys?
  • @Data_Kid 我不知道你在说什么......所以我猜没有:-)
猜你喜欢
  • 2014-04-05
  • 2022-07-20
  • 1970-01-01
  • 1970-01-01
  • 2021-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-06
相关资源
最近更新 更多