我有一个数据框' df'有两个整数列:
C1 C2
8 49
.. ..
由此,我想创建一个新列,用于连接具有特定宽度的两列。 C1应为两位数宽,C2为三位数宽,以便生成的列如下所示:
CODESUM
08049
前0对我来说不太重要。
到目前为止,我已尝试将str()
功能与str(df.C1)
一起使用,但没有成功。还有其他想法吗?
答案 0 :(得分:6)
使用双str.zfill
:
df['new'] = df.C1.astype(str).str.zfill(2) + df.astype(str).C2.str.zfill(3)
答案 1 :(得分:1)
您可以尝试以下方法:
df['CODESUM'] = df['C1'].astype(str).str.zfill(1) + df['C2'].astype(str).str.zfill(2)
“+”适用于str连接
答案 2 :(得分:0)
使用列表推导和格式化字符串(Python 3.6 +):
df['new'] = [f'{i:02d}{j:03d}' for i, j in df[['C1', 'C2']].values]
print(df)
C1 C2 new
0 8 49 08049
F字符串通常可以提高性能:
df = pd.concat([df]*100000)
%timeit [f'{i:02d}{j:03d}' for i, j in df[['C1', 'C2']].values] # 458ms / loop
%timeit [str(i).zfill(2)+str(j).zfill(3) for i, j in df[['C1', 'C2']].values] # 1.03s / loop
%timeit df.C1.astype(str).str.zfill(2) + df.astype(str).C2.str.zfill(3) # 1.02s / loop