从pandas数据框中的列中的特定位置删除数字

时间:2019-05-04 17:27:03

标签: python pandas

我在pandas数据框df中有列

import pandas as pd
s = {'id': [47035,460,23045,87068,8007,78096],
 'st': ['a', 'a', 'd', 'e', 'f', 'a']}
df = pd.DataFrame(s)

我想删除仅位于列id中第三位置的0(或其他任何数字,如果存在)。我该怎么做?

因此,删除后,我在ID列中的值应变为4735、46、2345、8768、807、7896。

4 个答案:

答案 0 :(得分:4)

按如下方式使用str.slice_replace

df.id.astype(str).str.slice_replace(2, 3, '')

Out[422]:
0    4735
1      46
2    2345
3    8768
4     807
5    7896
Name: id, dtype: object

答案 1 :(得分:1)

一种选择是将它们转换为字符串并删除第三个字符,然后转换回int:

CreateOrUpdateBloodSugarLevel(int userId, DateTime measureDate, int bloodSugarLevel)

答案 2 :(得分:1)

IIUC

s = {'id': [47035,460,23045,87068,8007,78096],
 'st': ['a', 'a', 'd', 'e', 'f', 'a']}
df = pd.DataFrame(s)

# convert to sting and strip away the middle third character then concat
df['id'] = (df['id'].astype(str).str[:2] + df['id'].astype(str).str[3:]).astype(int)

     id st
0  4735  a
1    46  a
2  2345  d
3  8768  e
4   807  f
5  7896  a

答案 3 :(得分:1)

此解决方案也适用:

df['id'].astype(str).str.replace(r"^(?P<one>..).", lambda x: x.group("one") )

编辑:名为“一个”的组将拾取前两个整数,并将其保留在最终替换中,尽管会删除第三个整数。