首页 > 解决方案 > 根据条目长度将字符串添加到列

问题描述

我有一个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

标签: pythonstringpandas

解决方案


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

我在第一次拥有该列的数据类型时添加了str()周围。xintcode

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

推荐阅读