【问题标题】:Add string to column based on length of entry根据条目长度将字符串添加到列
【发布时间】:2019-11-07 07:48:24
【问题描述】:

我有一个 df:

1.colour     code
2.red        1234
3.blue       234
4.yellow     4567
5.green      456

带有列,并且还需要根据条目的长度添加一个字符串。我试过了:

 i = 0
 mylist = df['code']
 mystring3 = ('D')   
 mystring4 = ('B')

 for i in range(len(mylist)):
     if len(mylist[i]) == 3:
        mylist[i] = mystring3 +  mylist[i]
     else:
        mylist[i] = mystring4 +  mylist[i]
    i+=1

这需要很长时间,并且我失去了颜色列的位置。即使重复,我如何保持位置 非常感谢J

【问题讨论】:

  • 你能添加更多解释吗?什么样的字符串?
  • 抱歉,我按错了,只问了一部分问题。
  • 嗨,詹克勒斯!感谢您添加更多信息,但我非常怀疑此代码是否有效。我可以看到未闭合的括号。
  • 可以添加示例数据集吗?

标签: python string pandas


【解决方案1】:

您可以使用apply (https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.apply.html) 来完成预期的操作。

我在x 周围添加了str(),因为我首先为code 列添加了数据类型int

df = pd.DataFrame({'colour':['red','blue','yellow','green'],'code':['1234','234','4567','456']})

df['code'] = df['code'].apply(lambda x: 'D' + str(x) if len(str(x)) == 3 else 'B' + str(x))

print(df)

结果:

   colour   code
0     red  B1234
1    blue   D234
2  yellow  B4567
3   green   D456

这样,您还可以添加新列并保留旧列:

df = pd.DataFrame({'colour':['red','blue','yellow','green'],'code':['1234','234','4567','456']})

df['code_new'] = df['code'].apply(lambda x: 'D' + str(x) if len(str(x)) == 3 else 'B' + str(x))

print(df)

新结果:

   colour  code code_new
0     red  1234    B1234
1    blue   234     D234
2  yellow  4567    B4567
3   green   456     D456

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-23
    • 2022-08-16
    • 2012-01-19
    相关资源
    最近更新 更多