2 回答

TA贡献1827条经验 获得超9个赞
您可能希望别人做任何事情之前的数字转换成字符串,所以我认为col1和col2都是字符串。
首先,找到组合的字符串长度以及缺少多少个零:
pads = 13 - (df.col1.str.len() + df.col2.str.len())
然后生成必要的填充并连接列和填充:
df['var3'] = df.col1 + pads.apply(lambda x: x * '0') + df.col2
#0 1234561234567
#1 2000000000004
#2 12345671234567

TA贡献1825条经验 获得超6个赞
对于每一行,创建一个包含 3 个值的元组:
字符串1
字符串2
两个字符串的长度与13(或任何目标长度)之间的差
x = pd.Series(list(zip(df['col1'].astype(str),
df['col2'].astype(str),
13 - (df['col1'].astype(str) + df['col2'].astype(str)).str.len())))
然后,使用字符串方法ljust将左字符串填充为0,并将其添加到右字符串。将所有内容分配给新列。
df['var3'] = x.apply(lambda x: x[0].ljust(x[2], '0') + x[1])
添加回答
举报