Pandas去除前导零

4

我有一个简短的脚本可以对数据进行透视。第一列是9位数字ID号码,通常以零开头,例如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)

尽管CSV文件中的ID是000123456,但输出结果只包含123456。即使设置了明确的数据类型(dtype),Pandas仍会删除前导零。是否有解决方法告诉Pandas保留前导零?

你的意思是什么?read_csv函数仍然需要使用dtype参数来指定列类型。 - gold_cy
我不应该添加那部分内容,因为它很令人困惑。即使我使用np指定dtype,例如dtype={'id':np.int32},它仍然会删除前导零。 - Hayden
2
你应该将该字段指定为 str 类型。 - Alex
2个回答

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

df = pd.read_csv('source', dtype={'id':np.str})


2
你可以在读取csv文件“source”后,使用pandas的zfill()方法。基本上,你将用尽可能多的零填充属性“id”的值,在这种情况下,使数字为9位数(3个零+6个原始数字)。因此,我们会得到如下结果:
df = pd.read_csv('source')

df.index = df.index.str.zfill(9)

# (...)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接