我有一个数据框
USER =
zipcode userCount
0 00601 5
1 00602 23
2 00603 53
3 00604 2
4 00605 6
5 00606 10
6 00610 8
7 00612 33
8 00613 2
9 00614 2
10 00616 1
11 00617 9
12 00622 6
13 00623 28
14 00624 10
15 00627 8
16 00631 1
17 00637 13
18 00638 9
19 00641 12
20 00646 13
当我保存时
USER.to_csv('Total_user.csv',index = False)
我在邮政编码面前丢失了0。 00601 - > 601
zipcode userCount
601 5
602 23
603 53
604 2
605 6
606 10
610 8
612 33
613 2
614 2
616 1
617 9
622 6
623 28
624 10
627 8
631 1
637 13
638 9
641 12
646 13
在to_csv行中我错过了什么?我只想在csv前面保存0。然后当我read_csv(low_memory = False)然后zipcode具有正常格式。
答案 0 :(得分:1)
假设第一个数据帧的列df['zipcode']
已经是一列字符串,则以这种方式保存:
>>> df.to_csv('zipcodes.csv',dtype={'zipcode':'str','userCount':int})
然后在阅读时,将所有数据类型设置为str
,然后转换那些不是这样的数据类型:
>>> pd.read_csv('zipcodes.csv',dtype='str',index_col=0)
zipcode userCount
0 00601 5
1 00602 23
2 00603 53
3 00604 2
4 00605 6
5 00606 10
6 00610 8
7 00612 33
8 00613 2
9 00614 2
10 00616 1
11 00617 9
12 00622 6
13 00623 28
14 00624 10
15 00627 8
16 00631 1
17 00637 13
18 00638 9
19 00641 12
20 00646 13
>>> df['userCount'] = df['userCount'].astype(int)
>>> df.dtypes
zipcode object
userCount int64
dtype: object
答案 1 :(得分:0)
您的数据可能作为对象类型存储在数据框中。您可以通过输入以下内容来确认:
df.dtypes
>>> zipCode object
userCount object
dtype: object
Python不喜欢0前缀整数,因此对象dtype。保存时,您需要引用数据。您可以通过read_csv()
中的quoting参数执行此操作import csv
df.to_csv('tmp.csv', quoting=csv.QUOTE_NONNUMERIC)
如果您没有引用您的数据,当您重新阅读并剥离前导零时,pandas会将其转换为整数。
答案 2 :(得分:0)
请使用dtype=str
作为read_csv(file,sep,dtype=str)
方法的参数。
这将解决问题。