Python 删除前导零

Python 删除前导零,python,python-3.x,pandas,Python,Python 3.x,Pandas,我有一个简短的脚本来透视数据。第一列是一个9位数的ID号,通常以零开头,例如000123456 以下是脚本: df=pd.read\u csv('源') 新建_df=df.pivot_表(索引='id',列=df.groupby('id').cumcount().add(1),值=['prog_id','prog_type'],aggfunc='first')。排序_索引(轴=1,级别=1) new_df.columns=[f'{x}}{y}代表x,y在new_df.columns中] 新建到c

我有一个简短的脚本来透视数据。第一列是一个9位数的ID号,通常以零开头,例如
000123456

以下是脚本:

df=pd.read\u csv('源')
新建_df=df.pivot_表(索引='id',列=df.groupby('id').cumcount().add(1),值=['prog_id','prog_type'],aggfunc='first')。排序_索引(轴=1,级别=1)
new_df.columns=[f'{x}}{y}代表x,y在new_df.columns中]
新建到csv(“目的地”)
打印(新文档)
尽管正在使用id(如
000123456
)读取CSV,但输出仅包含
123456


即使在设置显式数据类型时,Pandas也会删除前导零。有没有办法让Pandas保留前导零?

根据原始帖子上的评论,将dtype设置为字符串:


df=pd.read\u csv('source',dtype={'id':np.str})
您可以在读取csv文件
“source”
后立即使用pandas的
zfill()
方法。基本上,您可以在属性
“id”
的值中填充任意多的零,在这种特殊情况下,使数字为9位数(3个零+6个原始数字)。因此,我们将:

df=pd.read\u csv('源')
df.index=df.index.str.zfill(9)
# (...)

你是什么意思?
read\u csv
函数仍然使用一个
dtype
参数来指定列类型,我甚至不应该添加该部分,因为这会让人困惑。即使我使用np指定一个数据类型,例如
dtype={'id':np.int32}
,它仍然会删除前导零。您应该将字段指定为
str