从pandas dataframe中的字符串列中删除零

时间:2017-07-11 11:52:09

标签: python pandas dataframe

我的数据框中有一个列,其值如下:

col1:
    00000000000012VG
    00000000000014SG
    00000000000014VG
    00000000000010SG
    20000000000933LG
    20000000000951LG
    20000000000957LG
    20000000000963LG
    20000000000909LG
    20000000000992LG

我想删除所有零:

a)位于其他数字和字母前面(例如,00000000000010SG我要删除此部分000000000000并保留10SG)。

b)在20000000000992LG之类的情况下,我想删除此部分0000000000并将2992LG联合起来。

当我检查时,

str.stprip('0')只解决了a)部分。

但这两种情况的正确解决方案是什么?

2 个答案:

答案 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,这不是动态的,但对于给定的数据集,这是最简单的事情,除非您能更好地解释模式