我有一个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
答案 0 :(得分:1)
您可以使用apply
(https://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