有没有办法在数据帧的特定列中添加 0 以匹配特定位数?

Is there ways to add 0s in a specific columns of dataframe to match specific number of digits?

我有两个表,其中一列包含特定 ID。

例如,

TABLE一个

cust_id 
1234
32145
1235692
9293159

TABLEB

cust_id 
0001234
0032145
1235692
9293159 

我正在尝试使用 sql 应用内部联接,但由于它们不完全匹配,因此使用内部联接子句的结果中缺少前两个 ID 1234 (0001234)、32145 (0032145) .

所以这是我的问题。

  1. 有什么方法可以在TABLE A的cust_id前面添加额外的0来匹配TABLE B的cust_id吗?

比如1234只有4位,转换后就是7位,前面加三个0 --> 0001234.

  1. 使用 Python 是否更容易处理这些类型的任务?或 SQL? 我过去的数据清理经验告诉我它是 Python,但还有其他建议吗?

如果可能的话,对于这个具体案例,我希望我可以使用 Python 或 SQL 获得帮助。

提前致谢。

对于 python,这可以使用 pandas 轻松处理。

假设 cust_id 已经是一个字符串列:

>>> df.cust_id.apply(lambda x: x.zfill(7))
0    0001234
1    0032145
2    1235692
3    9293159

对于 SQL,您声明您正在使用 SSMS,因此这意味着 SQL 服务器。 SQL 不幸的是,服务器没有开箱即用的 LPAD 功能,但您可以使用以下方法复制它:

REPLACE(STR(<column_name>, <desired_length>),' ','0')

例如:

with cust_ids as (
    select * from (
        values 
            ('1234'),
            ('32145'),
            ('1235692'),
            ('9293159')
        ) a (cust_id)
)

select 
    cust_id,
    REPLACE(STR(cust_id, 7),' ','0') as padded_cust_id
from cust_ids