在Python 3和pandas中,我有一个数据框,其中有一列cpf,其中包含代码
candidatos_2014.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 26245 entries, 0 to 1063
Data columns (total 7 columns):
uf 26245 non-null object
cargo 26245 non-null object
nome_completo 26245 non-null object
cpf 26245 non-null object
nome_urna 26245 non-null object
partido_eleicao 26245 non-null object
situacao 26245 non-null object
dtypes: object(7)
memory usage: 1.6+ MB
这些代码是这样的数字:“00229379273”、“84274662268”、“09681949153”、“53135636534”。。。
我保存为CSV
candidatos_2014.to_csv('candidatos_2014.csv')
我使用Ubuntu和LibreOffice。但当我打开文件时,cpf列不显示前导零:
"229379273", "9681949153"
请问,有没有办法保存一个CSV,在只有数字的列中左边保留零?
首先,确保csv文件中的输出没有零。 如果是这样,但您在Excel或其他电子表格中打开该文件,有时仍然可以看到不带前导零的值。 在这种情况下,转到“数据”菜单,然后导入表单文本。 Excel的导入实用程序将为您提供定义每个列的数据类型的选项。
我相信在其他应用程序中应该是类似的。
希望有帮助!
TLDR:如果pandas列是类型
object
,则无需执行任何操作我觉得这里的两个答案,尤其是公认的答案,都是令人困惑的。简而言之,如果列的
dtype
是object
,那么pandas将用前导零来编写它。没什么可做的。如果像我一样,你来这里是因为你不确定,当你打开CSV时,前导零消失了,然后按照Ivan的建议——看看你写的文件来验证,但是你应该在那里看到前导零。
如果你这样做了,那么这两个答案都给出了如何在保留前导零时读回数据的指导。
如果没有,则在保存CSV时pandas中的数据类型不正确。仅仅使用
astype
更改该列不会恢复零。您还需要使用str.zfill
,如本文SO answer.所述读取csv文件时,将dtype指定为string,如下所示:
或将数据列转换为字符串
相关问题 更多 >
编程相关推荐