根据输入长度将字符串添加到列

时间:2019-11-07 07:48:24

标签: python string pandas

我有一个df:

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

with列,也需要根据条目的长度添加一个字符串。我已经尝试过:

 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

1 个答案:

答案 0 :(得分:1)

您可以使用applyhttps://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.apply.html)来达到预期效果。

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

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