读取 csv 文件时删除前导零
Remove leading zeros when reading a csv file
我有一个看起来像这样的 CSV 文件 -
Location ID Location Name
3543459 A
20541 B
C320 C
... ..
当我使用 pd.read_csv
读取文件时,我得到这样的结果 -
Location ID Location Name
03543459 A
0020541 B
000C320 C
... ..
如何避免前导零?我做了一些研究,我能找到的所有问题都是基于在 df 中生成前导零。
使用post处理str.lstrip
:
df['Location ID'] = df['Location ID'].str.lstrip('0')
df['Location ID'] = df['Location ID'].apply(lambda x: x.lstrip('0'))
我在行下混合输入了..
df['col'] = df['col'].apply(lambda x:x.lstrip('0') if type(x) == str else x)
对于任何具有更复杂字符串(例如 'AB00003423'
)的人,您可以使用 Series.str.extract()
和正则表达式:
extractedNumbers = df.ID_col.str.extract('^[A-Z]+0+([0-9]+)$')
这将 return 正则表达式括号(或“捕获组”)内的任何内容的列。
通常,数据帧 return 每个捕获组包含 1 列,请改用 expand=False
到 return 系列。
我有一个看起来像这样的 CSV 文件 -
Location ID Location Name
3543459 A
20541 B
C320 C
... ..
当我使用 pd.read_csv
读取文件时,我得到这样的结果 -
Location ID Location Name
03543459 A
0020541 B
000C320 C
... ..
如何避免前导零?我做了一些研究,我能找到的所有问题都是基于在 df 中生成前导零。
使用post处理str.lstrip
:
df['Location ID'] = df['Location ID'].str.lstrip('0')
df['Location ID'] = df['Location ID'].apply(lambda x: x.lstrip('0'))
我在行下混合输入了..
df['col'] = df['col'].apply(lambda x:x.lstrip('0') if type(x) == str else x)
对于任何具有更复杂字符串(例如 'AB00003423'
)的人,您可以使用 Series.str.extract()
和正则表达式:
extractedNumbers = df.ID_col.str.extract('^[A-Z]+0+([0-9]+)$')
这将 return 正则表达式括号(或“捕获组”)内的任何内容的列。
通常,数据帧 return 每个捕获组包含 1 列,请改用 expand=False
到 return 系列。