我有一个简短的数据透视脚本。第一列是9位数字的ID号,通常以零开头,例如cd
这是脚本:
000123456
尽管正在使用df = pd.read_csv('source')
new_df = df.pivot_table(index = 'id', columns = df.groupby('id').cumcount().add(1), values = ['prog_id', 'prog_type'], aggfunc='first').sort_index(axis=1,level=1)
new_df.columns = [f'{x}_{y}' for x,y in new_df.columns]
new_df.to_csv('destination')
print(new_df)
之类的ID读取CSV,但是输出仅包含000123456
即使设置显式dtype,Pandas也会删除前导零。是否有办法告诉熊猫离开前导零?
答案 0 :(得分:3)
对原始帖子的评论,将dtype设置为字符串:
df = pd.read_csv('source', dtype={'id':np.str})
答案 1 :(得分:2)
在读取csv文件zfill()
之后,您可以立即使用pandas的"source"
方法。基本上,您将在属性"id"
的值中填充任意数量的零(在这种情况下),使数字长9位(3个零+ 6个原始数字)。因此,我们将拥有:
df = pd.read_csv('source')
df.index = df.index.str.zfill(9)
# (...)