首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在读取csv文件时保持Dataframe中的列的位数限制?

如何在读取csv文件时保持Dataframe中的列的位数限制?
EN

Stack Overflow用户
提问于 2021-06-10 20:03:58
回答 2查看 32关注 0票数 0

我正在读取csv文件作为pandas数据帧。有一个名为"c_id“的列,它只包含数字。它将是3位数字。下面是csv内容

代码语言:javascript
复制
doc_id,c_id,functional_area,doc_type,capture_date,file_name
011,"023","AP","AP - CHECKS","2021-05-01","file-11"
012,"023","AP","AP - CHECKS","2021-05-02","file-12"
013,"023","AP","AP - CHECKS","2021-05-01","file-13"
014,"023","AP","AP - CHECKS","2021-05-01","file-13"

c_id可能的其他值:"23",23,005,9,234,430等。

当我将它作为pandas dataframe读取时,我需要将该列保持为3位数列。所以

如果在csv中,

代码语言:javascript
复制
"23" it should be 023 in dataframe. similarly
23 -> 023,
005 -> 005
9 -> 009 etc.

我如何才能做到这一点?

代码语言:javascript
复制
dtypes = {'c_id': 'str'}   
df = pd.read_csv('test.csv', dtype = dtypes) 

我也尝试过使用dtype。但是没有得到所需的结果。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-06-10 20:09:53

您提出的解决方案适用于我:

代码语言:javascript
复制
In [1]: df = pd.read_csv('test.csv', dtype={'c_id': 'str'})

In [2]: df
Out[2]: 
   doc_id c_id functional_area     doc_type capture_date file_name
0      11  023              AP  AP - CHECKS   2021-05-01   file-11
1      12  023              AP  AP - CHECKS   2021-05-02   file-12
2      13  023              AP  AP - CHECKS   2021-05-01   file-13
3      14  023              AP  AP - CHECKS   2021-05-01   file-13

如果想要向长度不正确的字符串添加补零,可以使用Series.str.zfill

代码语言:javascript
复制
df['c_id'] = df['c_id'].str.zfill(3)
票数 2
EN

Stack Overflow用户

发布于 2021-06-10 20:12:50

您可以按如下方式使用.str.zfill

代码语言:javascript
复制
import pandas as pd
df = pd.DataFrame({"c_id":["23","005","9"]})
df["c_id"] = df["c_id"].str.zfill(3)
print(df)

输出

代码语言:javascript
复制
  c_id
0  023
1  005
2  009

说明:用0填充zfill以获得所需的宽度(在本例中为3),如果给定的字符串已经和0一样长或更长,则不会发生任何变化。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67920757

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档