我试图将多列从float转换为数据帧中的字符串类型。
我在下面有一个数据框:
df = pd.DataFrame({'User':['101','102','103','104','105','106'],'CountA':[7,8,9,10,11,12],'CountB':[1,2,3,4,5,6],'CountC':[13,14,15,16,17,18]})
我正在尝试使用for循环将列“ CountA”和“ CountB”转换为字符串:
convert = (df["CountA"], df["CountB"])
col_name = ["CountA","CountB"]
for a in convert:
for b in col_name:
df[b] = a.astype(str)
使用for循环转换后,我的CountA值由CountB值替换,如下所示:
df = pd.DataFrame({'User':['101','102','103','104','105','106'],'CountA':[1,2,3,4,5,6],'CountB':[1,2,3,4,5,6],'CountC':[13,14,15,16,17,18]})
发生了什么事?
答案 0 :(得分:2)
在您的循环中,您两次更改了他们的位置。第一次,它将进行正确的替换。第二次迭代将它们切换。
改用这个:
for a,b in zip(convert,col_name):
df[b] = a.astype(str)
或更简单的选择是:
df[["CountA","CountB"]] = df[["CountA","CountB"]].astype(str)
答案 1 :(得分:1)
如果您要做的只是将列的数据类型从int更改为string,为什么不简单地执行以下操作:
col_name = ["CountA","CountB"]
for col in col_name:
df[col] = df[col].astype('str')