我的数据框中有一个列,其值如下:
col1:
00000000000012VG
00000000000014SG
00000000000014VG
00000000000010SG
20000000000933LG
20000000000951LG
20000000000957LG
20000000000963LG
20000000000909LG
20000000000992LG
我想删除所有零:
a)位于其他数字和字母前面(例如,00000000000010SG
我要删除此部分000000000000
并保留10SG
)。
b)在20000000000992LG
之类的情况下,我想删除此部分0000000000
并将2
与992LG
联合起来。
str.stprip('0')只解决了a)部分。
但这两种情况的正确解决方案是什么?
答案 0 :(得分:3)
我会推荐类似于Ed的答案,但是使用正则表达式来确保不会替换所有 0,并且无需对0的数字进行硬编码。
In [2426]: df.col1.str.replace(r'[0]{2,}', '', 1)
Out[2426]:
0 12VG
1 14SG
2 14VG
3 10SG
4 2933LG
5 2951LG
6 2957LG
7 2963LG
8 2909LG
9 2992LG
Name: col1, dtype: object
仅替换第一个0字符串。
感谢@jezrael在我的回答中指出了一个小错误。
答案 1 :(得分:2)
你可以做到
In[9]:
df['col1'] = df['col1'].str.replace('000000000000','')
df['col1'] = df['col1'].str.replace('0000000000','')
df
Out[9]:
col1
0 12VG
1 14SG
2 14VG
3 10SG
4 2933LG
5 2951LG
6 2957LG
7 2963LG
8 2909LG
9 2992LG
这将用空格替换固定数量的0
s,这不是动态的,但对于给定的数据集,这是最简单的事情,除非您能更好地解释模式