我正在读取csv文件作为pandas数据帧。有一个名为"c_id“的列,它只包含数字。它将是3位数字。下面是csv内容
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中,
"23" it should be 023 in dataframe. similarly
23 -> 023,
005 -> 005
9 -> 009 etc.我如何才能做到这一点?
dtypes = {'c_id': 'str'}
df = pd.read_csv('test.csv', dtype = dtypes) 我也尝试过使用dtype。但是没有得到所需的结果。
发布于 2021-06-10 20:09:53
您提出的解决方案适用于我:
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
df['c_id'] = df['c_id'].str.zfill(3)发布于 2021-06-10 20:12:50
您可以按如下方式使用.str.zfill:
import pandas as pd
df = pd.DataFrame({"c_id":["23","005","9"]})
df["c_id"] = df["c_id"].str.zfill(3)
print(df)输出
c_id
0 023
1 005
2 009说明:用0填充zfill以获得所需的宽度(在本例中为3),如果给定的字符串已经和0一样长或更长,则不会发生任何变化。
https://stackoverflow.com/questions/67920757
复制相似问题